Posted on 2009-06-18 14:38
小夜 阅读(358)
评论(0) 编辑 收藏 引用 所属分类:
[61] Linux 、
[04] 程序设计 、
[51] C&C++
进程间通信知识了解不少,今天第一次正式使用,就出问题了。
看看共享内存的原理,操作系统把一块公共的内存区域,映射到进程内存空间中,但映射的内存地址并不能保证映射后的地址一致性(其实一致的可能性很小,基本没有成功过),而此处array执行的地址为创建共享内存进程中正确的数组地址,在新的进程中就不对了。
因此在共享内存中,需要慎重使用指针变量。对于本文中的问题修改很简单,删除int *array,每次使用结构的地址跳过这些额外信息即可,可通过下面的宏函数得到数据域的指针。
文章来源:
http://blog.csdn.net/volant_hoo/archive/2009/05/11/4169093.aspx