疑问:全局变量的稳定性。本人做了一个输入法,也就是 dll 文件了。发现一个问题,在使用过程中,本人做的结构体,这个结构体是唯一一个的,也是放在头文件里声明唯一的变量,偶尔会出现结构体里的指针异常,然后,整个应用程序被迫异常中断。当本人在头文件里使用 extern 声明,放是别的文件声明变量的时候,发现无法使用 static 给结构体分配内存,这个怎么解决?我想如果能够分配内存,可能全局变量就稳定一点,不知道这样的想法对不对?

解决方案 »

  1.   

    偶尔会出现结构体里的指针异常,然后,整个应用程序被迫异常中断。
    ----说明你的程序有问题,不能怪全局变量吧。
    无法使用 static 给结构体分配内存。
    ----static导致这个变量的连接属性为:此文件,就是说外部文件无法使用它。楼主查一下关于全局变量和static变量的区别。
      

  2.   

    可以用全局函数代替全局变量class A
    {
      .....
    };A& getA()
    {
      static A a;
      return a;
    }
      

  3.   

    仔细检查全局变量结构体的指针,使用前,要判断它是不是为NULL。
      

  4.   

    dll内出现全局变量对于多线程的时候非常小心需要自己来维护
    有时后出现错误 会不会是你的dll某个地方内存溢出