前提:
现在有两个结构体typedef struct{
char name[20];
char address[50];
int age;
}PersonInfo;typedef struct{
int count_PersonInfo; //PersonInfo的个数
int structSize; //要被映射的内存大小
PersonInfo* pPersonInfo;//指向PersonInfo的指针。该指针所指内存空间的大小通过malloc开辟
}PersonInfos;
现在在进程A中将PersonInfos初始化,并写入共享内存。在进程B中读取该共享内存。
但是在进程B中读取PersonInfos中的PersonInfo指针时,发现通过映射获得地址所对应的PersonInfo结构的各字段值是错误的(但可以正确映射获得PersonInfos中的count_PersonInfo,structSize字段)。不知道这是什么原因造成的?请各位高手指点!谢谢!
现在有两个结构体typedef struct{
char name[20];
char address[50];
int age;
}PersonInfo;typedef struct{
int count_PersonInfo; //PersonInfo的个数
int structSize; //要被映射的内存大小
PersonInfo* pPersonInfo;//指向PersonInfo的指针。该指针所指内存空间的大小通过malloc开辟
}PersonInfos;
现在在进程A中将PersonInfos初始化,并写入共享内存。在进程B中读取该共享内存。
但是在进程B中读取PersonInfos中的PersonInfo指针时,发现通过映射获得地址所对应的PersonInfo结构的各字段值是错误的(但可以正确映射获得PersonInfos中的count_PersonInfo,structSize字段)。不知道这是什么原因造成的?请各位高手指点!谢谢!
应该是由于两边影射之后地址不一定相同引起的吧。
如A进程mapviewoffile之后的地址是A...
B进程mapviewoffile之后的地址是B...
A和B可能是不同的。这样pPersonInfo这个指针当然就指错地方了。
这样是否可以说明,进程A和B已经影射到了相同的内存地址。这样我再在进程B中使用pPersonInfo指针,应该是可以指向在进程A中初始化的对应的pPersonInfo指向的内存地址啊。这点不明白