本文內容總結自網絡:
(
http://www.ixpub.net/thread-1446958-1-1.html
http://topic.csdn.net/u/20090428/10/79fd9da9-2e16-4a46-943a-9fb3dde2a183.html
)
1、共享內存中用指針一般是用對首地址的偏移量,這樣就好了,每個進程映射的地址不一樣
2、交換用的數據中,永遠都不要出現指針。
什麼是交換用的數據?
磁盤文件、網絡封包、共享內存、消息隊列、管道,等等等等。
3、可以使用,但是那個指針指向的內存也必須是在那部分共享內存中的
4、共享內存裏的數據結構成員不要用指針,要用偏移量,shmat得到的地址不能保證一樣的
本人總結:
共享內存中不要出現指向共享內存外的指針,即使是指向共享內存中的指針也不要出現,因爲共享內存中的指針值是對首地址哦偏移,不同程序將該段共享內存映射到本程序時,共享內存地址可能不一樣,從而造成相對首地址偏移不一樣,最終導致指針指向的地址不一樣。
所以,在共享內存使用指向共享內存的指針時,使用偏移量來代替(相對共享內存首地址的偏移量);