看板 C_and_CPP 關於我們 聯絡資訊
大概是這樣的 我想學 某一本 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
mcauther:可以參考 pjsip 的 memory pool 07/01 07:37
mcauther:pjsip 裡面簡直是用 C 來寫物件導向 和 design pattern 07/01 07:43