一般来说,动态链接库在内存中只会加载一次

 

每个进程需要调用到次动态链接库的时候,都会从这一个内存地址中加载

 

但,如果进程需要改动动态链接库中的信息,哪怕是全局变量,系统也会从内存中重新分配出一小块区域,来进行这些变量的存储

那么与之对应的,每一个进程,所修改的动态链接库,只能是自己的一份,不能在所有进程中共享的

 

如果想在所有进程中共享一份动态链接库数据,则需要在DLL中设置一个共享的“节”

 

以下代码是定义一个节并给节命名为MySec,HWND g_hWnd=NULL;为将放在节中的数据

#pragma data_seg("MySec")
HWND g_hWnd=NULL;
#pragma data_seg()

 

 

 

以下代码是定义节的权限等,RWS:r为读,w为写,s为共享

#pragma comment(linker,"/section:MySec,RWS")

若不用此代码,也可在def文件中添加如下定义,所起作用相同

SEGMENTS
MySec    READ WRITE SHARED

posted on 2007-12-29 11:08  freetofly  阅读(1121)  评论(0)    收藏  举报