[問題] 如何用純C 描述 object ?

看板C_and_CPP (C/C++)作者 (software everywhere)時間16年前 (2009/07/01 01:14), 編輯推噓2(200)
留言2則, 1人參與, 最新討論串1/1
大概是這樣的 我想學 某一本 C++ 相關的書(忘記哪一本) 的 mem pool 動作 他的 mem pool 使用 single linked list 充當 mem allocate 的緩衝 如果是已經 allocated的 mem block 當 apps release該塊block時 mem pool的運作 不是直接 free掉 而是將該塊 block串回 free 的linked list 當有 apps allocate mem時候 再把剛剛那塊 block pointer丟出來 當然 linked list的 head 往前移動 如此 就可以減少 allocate/release mem的 動作 sorry~ 以上 只是介紹 和我要問的主題 關係不大 @@" 我想問的是 有一塊 mem block 以mem pool的觀點 最基本的兩個operation是 allocate/release 但是 我再上面又包一層 把它當成 double linekd list 使用 從 double linked list的觀點 他該提供的功能是 push_back(), pop_back() push_front(), pop_front() isEmpty(), clean() ...之類的 請問 如果 我要改成 clss 描述的話? 我應該怎樣描述 比較合理??? array+allocate/release -> mem_block mem_block+push/pop--front/back... -> Double linked list object? 還是 array+allocate/release -> mem_block mem_block+ interface(push/pop--front/back) -> Double linked list object? ------------------------------------------------------------------------- 我列一下prototype // header typedef unsigned char N_IDX; typedef struct{ N_IDX pre_idx; //內部記 是記 對 array name的index N_IDX next_idx; unsigned long ul_data; //假裝它是 user data }S_NODE; // source // data static S_NODE arList[10]={0}; //pointer of free space, using single linked list static S_NODE *l_ptr_free = 0; // double linked list head/tail pointers static S_NODE *l_ptr_used_head = 0; static S_NODE *l_ptr_used_tail = 0; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.166.118.119

07/01 07:37, , 1F
可以參考 pjsip 的 memory pool
07/01 07:37, 1F

07/01 07:43, , 2F
pjsip 裡面簡直是用 C 來寫物件導向 和 design pattern
07/01 07:43, 2F
文章代碼(AID): #1AIaVv-E (C_and_CPP)
文章代碼(AID): #1AIaVv-E (C_and_CPP)