本文内容总结自网络:
(
http://www.ixpub.net/thread-1446958-1-1.html
http://topic.youkuaiyun.com/u/20090428/10/79fd9da9-2e16-4a46-943a-9fb3dde2a183.html
)
1、共享内存中用指针一般是用对首地址的偏移量,这样就好了,每个进程映射的地址不一样
2、交换用的数据中,永远都不要出现指针。
什么是交换用的数据?
磁盘文件、网络封包、共享内存、消息队列、管道,等等等等。
3、可以使用,但是那个指针指向的内存也必须是在那部分共享内存中的
4、共享内存里的数据结构成员不要用指针,要用偏移量,shmat得到的地址不能保证一样的
本人总结:
共享内存中不要出现指向共享内存外的指针,即使是指向共享内存中的指针也不要出现,因为共享内存中的指针值是对首地址哦偏移,不同程序将该段共享内存映射到本程序时,共享内存地址可能不一样,从而造成相对首地址偏移不一样,最终导致指针指向的地址不一样。
所以,在共享内存使用指向共享内存的指针时,使用偏移量来代替(相对共享内存首地址的偏移量);