前提:
现在有两个结构体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字段)。不知道这是什么原因造成的?请各位高手指点!谢谢!

解决方案 »

  1.   

    昏,看错了。
    应该是由于两边影射之后地址不一定相同引起的吧。
    如A进程mapviewoffile之后的地址是A...
      B进程mapviewoffile之后的地址是B...
      A和B可能是不同的。这样pPersonInfo这个指针当然就指错地方了。
      

  2.   

    但是PersonInfos中的 int count_PersonInfo 和int structSize可以在进程B中映射到。
    这样是否可以说明,进程A和B已经影射到了相同的内存地址。这样我再在进程B中使用pPersonInfo指针,应该是可以指向在进程A中初始化的对应的pPersonInfo指向的内存地址啊。这点不明白