data_seg

     #pragma data_seg() 是vc编译器提供的预处理指令,可以实现进程间数据共享。一般用于DLL中,且数据必须初始化,否则编译器会把未初始化数据放到.BSS段中

      

#pragma data_seg("MySection")
int nSize = 10;    // 必须初始化
#pragma data_seg()
#pragma comment(linker,"/SECTION:MySection,RWS")   // 设置可读写

JNAAPI int GetValue()
{
    return nSize;
}

JNAAPI void SetValue(int value)
{
     nSize = value;
}

#endif 

    用exescope查看,发现多出一个MySection段

    data_seg

 

    测试: 

    

int main(int argc,char **argv)
{
	// 当前结果
	printf("当前结果:%d\n",GetValue());
	
	// 设置结果
	SetValue(25);	
	printf("设置后的结果:%d\n",GetValue());

	getchar();
	return 0;
}

    启动进程发现打印:10 25

    启动另一个进程打印: 25 25,发现数据已被多个进程共享 

 

  

    

你可能感兴趣的:(共享变量,data_seg)