您的位置:首页 > 理论基础 > 数据结构算法

笔记:shmat 共享内存中,如果包含指针,指针数据出错的原因

2011-05-20 11:43 465 查看
本文内容总结自网络:



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得到的地址不能保证一样的

 

本人总结:

    共享内存中不要出现指向共享内存外的指针,即使是指向共享内存中的指针也不要出现,因为共享内存中的指针值是对首地址哦偏移,不同程序将该段共享内存映射到本程序时,共享内存地址可能不一样,从而造成相对首地址偏移不一样,最终导致指针指向的地址不一样。

   所以,在共享内存使用指向共享内存的指针时,使用偏移量来代替(相对共享内存首地址的偏移量);

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构 网络 磁盘
相关文章推荐