data_seg
来源:互联网 发布:mcu软件开发 编辑:程序博客网 时间:2024/05/18 02:47
1,#pragma data_seg()一般用于DLL中。也就是说,在DLL中定义一个共享的,有名字的数据段。最关键的是:这个数据段中的全局变量可以被多个进程共享。否则多个进程之间无法共享DLL中的全局变量。
2,共享数据必须初始化,否则微软编译器会把没有初始化的数据放到.BSS段中,从而导致多个进程之间的共享行为失败。
3,你所谓的结果正确是一种错觉。如果你在一个DLL中这么写:
#pragma data_seg("MyData")
int g_Value; // Note that the global is not initialized.
#pragma data_seg()
DLL提供两个接口函数:
int GetValue()
{
return g_Value;
}
void SetValue(int n)
{
g_Value = n;
}
然后启动两个进程A和B,A和B都调用了这个DLL,假如A调用了SetValue(5); B接着调用int m = GetValue(); 那么m的值不一定是5,而是一个未定义的值。因为DLL中的全局数据对于每一个调用它的进程而言,是私有的,不能共享的。g_Value为进行了初始化,那么g_Value就一定会被放进MyData段中。换句话说,如果A调用了SetValue(5); B接着调用int m = GetValue(); 那么m的值就一定是5!这就实现了跨进程之间的数据通信!
- data_seg
- data_seg
- data_seg
- data_seg
- #pragma data_seg()
- #pragma data_seg
- #pragma data_seg
- #pragma data_seg
- #pragma data_seg
- #pragma data_seg
- #pragma data_seg()
- #pragma data_seg
- #pragma data_seg()
- #pragma data_seg
- #pragma data_seg()
- #pragma data_seg()
- pragma data_seg
- #pragma data_seg介绍
- 全屏显示视图的代码 vc
- 五年计划时间概览
- [转]MPLS第五话:单纯VRF实现VPN
- 数字图像处理领域的二十四个典型算法及vc实现、第二章
- ASM 安装
- data_seg
- 学与习
- AOP的MethodBeforeAdvice
- Visual Assist中常用的AutoText
- Nosql 比较
- 细说 #pragma pack(n)【转】
- 多少企业要本科,多少要专科
- PowerDesigner中Stereotype的创建
- 服务器故障,暂停个人空间头像更新。