亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2076 | 回復: 6
打印 上一主題 下一主題

如何在共享存儲段中建立一個數據對象鏈接列表 apue習題15.13 [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2009-08-06 09:22 |只看該作者 |倒序瀏覽
問題如題
答案也看了
沒看懂
最好哪位能給出代碼 小弟參考參考
沒有代碼給描述下也行

[ 本帖最后由 tianxiaogang12 于 2009-8-6 09:28 編輯 ]

論壇徽章:
0
2 [報告]
發(fā)表于 2009-08-06 09:48 |只看該作者
個人做法:
1,分配足夠大小的共享內存
2,寫一個共享內存的分配函數,記錄內存用了多少、還剩多少,返回剩余的首地址
3,作用該分配函數動態(tài)的生成鏈表

論壇徽章:
0
3 [報告]
發(fā)表于 2009-08-06 10:07 |只看該作者
說說我對你的做法的理解, 看對不對阿
1,分配足夠大小的共享內存
         用庫函數malloc(比如返回地址是ptr)進行分配足夠大小內存,
         shmget共享內存, 然后然后把共享內存依附于剛才 malloc分配的內存ptr
2,寫一個共享內存的分配函數,記錄內存用了多少、還剩多少,返回剩余的首地址
         基于ptr定義分配函數, 這不難,假設定義好了 my_malloc,
        把鏈表的節(jié)點要用的空間用my_malloc進行分配, 這樣就把節(jié)點存儲在共享
        內存了
3     把剛才在共享內存分配的地址用來進行鏈表的鏈接

是這樣的嗎?
但是這是不是太繁瑣了,  主要是在寫自己的分配函數那,
有沒有別的好方法阿

論壇徽章:
0
4 [報告]
發(fā)表于 2009-08-06 10:22 |只看該作者
共享內存的分配函數不復雜:
struct TShmAlloc
{
        int                 used;
        int                total;                //total usable byte
        void        *pstart;        //start address
        void        *pcurr;                //current position
};
struct TShmAlloc tShmAlloc={0};

void* ShmAlloc(int size)
{
        if( size<=0 )
                size = 1;

        if( size > tShmAlloc.total - tShmAlloc.used )
        {
                abort();        //died yourself.
        }

        void *pret        = tShmAlloc.pcurr;

        tShmAlloc.pcurr                += size;
        tShmAlloc.used                += size;

        return pret;
}

論壇徽章:
0
5 [報告]
發(fā)表于 2009-08-06 10:50 |只看該作者
謝謝ls, 還有個問題

就是父子進程 都是通過鍵key來獲得共享內存的引用,這樣就達到了共享目的,
但是怎么來獲取剛才存放在共享內存的鏈表呢? 或者是鏈表的head指針


我的做法是這樣

code :
   struct link *head

   head = (struct link *)shared_memory; //shared_memory 是共享內存的地址


code :
   struct link *head

   head = (struct link *)shared_memory; //shared_memory 是共享內存的地址
是不是這樣父子進程就獲得了共享內存里的鏈表
不是這樣的話,怎么獲取鏈表的?

論壇徽章:
0
6 [報告]
發(fā)表于 2009-08-06 11:42 |只看該作者
這樣也可以,也可以有共享內存的頂部放置一些索引結構,訪問共享內存中分配的具體結構。。

論壇徽章:
0
7 [報告]
發(fā)表于 2009-08-06 12:11 |只看該作者
共享內存的頂部放置一些索引結構 這個辦法好阿, 怎么自己沒有想到呢 呵呵, 謝謝ls
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯網協(xié)會會員  聯系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP