[問題] 如何用純C 描述 object ?
看板C_and_CPP (C/C++)作者softwind (software everywhere)時間16年前 (2009/07/01 01:14)推噓2(2推 0噓 0→)留言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
07/01 07:37, 1F
推
07/01 07:43, , 2F
07/01 07:43, 2F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章