一般来说,动态链接库在内存中只会加载一次
每个进程需要调用到此动态链接库的时候,都会从这一个内存地址中加载
但,如果进程需要改动动态链接库中的信息,哪怕是全局变量,系统也会从内存中重新分配出一小块区域,来进行这些变量的存储
那么与之对应的,每一个进程,所修改的动态链接库,只能是自己的一份,不能在所有进程中共享的
如果想在所有进程中共享一份动态链接库数据,则需要在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