如下:
#pragma data_seg(".SHARDAT")
static char s[100];
int i = 0;
#pragma data_seg()
书上说:这样会跨越该dll的所有使用场合创建一个共享的数据段,那么加上static和不加有什么区别呢?书上有个例子在#pragma data_seg中间申明了一个记录当前客户的个数,没有加static,但看来效果和加了static是一样的,不然每来一个客户不就清零了。

解决方案 »

  1.   

    我觉得区别就是加了static数据是放在静态数据段,不加是放在进程的堆里面
      

  2.   

    静态共享数据和动态共享数据的不同在于初始化,静态数据必须在Dll被挂接前初始化,可以用于分配多进程共享的内存空间。
      

  3.   

    static 数据在类的对象没有创建之前就已经存在了,可能为了一些东东,所以需要这些变量很早就存在!
      

  4.   

    static数据存放在全局数据区,只需初始化一次
      

  5.   

    #pragma data_seg(".SHARDAT")标出的数据一定是在数据区里的,不可能是在堆栈中的所以加不加是一样的