2 u011652814 u011652814 于 2013.08.14 20:51 提问

两个进程间能使用共享内存段进行数据共享吗?

我是这样做的:
在一个dll里面定义一个共享数据段,里面定义一个整形数据,然后定义两个导出函数对这个整形数据进行操作。
#pragma data_seg ("ShareDataSeg") //开辟一个名字为"ShareDataSeg"的共享内存段
int g_nShareInt = 0;
#pragma data_seg() //共享内存段"ShareDataSeg"定义结束
//加上这条声明,让这个共享内存段可以在所有动态或静态连接这个DLL的进程中都能看到,这个共享内存段会直接加载到进程堆栈空间
#pragma comment(linker, "/SECTION:ShareDataSeg,RWS")
extern "C" __declspec(dllexport) int SetVal(int val);
extern "C" __declspec(dllexport) int GetVal();

再写两个进程,都加载这个dll,都对这个共享数据段内的整形数据的值进行修改,发现两个进程使用的根本就是两个不同的变量,根本没有进程间共享的效果。
求高手指点!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!