Posted on 2009-06-18 14:38
小夜 閱讀(374)
評論(0) 編輯 收藏 引用 所屬分類:
[61] Linux 、
[04] 程序設計 、
[51] C&C++
進程間通信知識了解不少,今天第一次正式使用,就出問題了。
看看共享內存的原理,操作系統把一塊公共的內存區域,映射到進程內存空間中,但映射的內存地址并不能保證映射后的地址一致性(其實一致的可能性很小,基本沒有成功過),而此處array執行的地址為創建共享內存進程中正確的數組地址,在新的進程中就不對了。
因此在共享內存中,需要慎重使用指針變量。對于本文中的問題修改很簡單,刪除int *array,每次使用結構的地址跳過這些額外信息即可,可通過下面的宏函數得到數據域的指針。

文章來源:
http://blog.csdn.net/volant_hoo/archive/2009/05/11/4169093.aspx