作者softwind (software everywhere)
看板C_and_CPP
标题[问题] 如何用纯C 描述 object ?
时间Wed Jul 1 01:14:30 2009
大概是这样的
我想学 某一本 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
1F:推 mcauther:可以参考 pjsip 的 memory pool 07/01 07:37
2F:推 mcauther:pjsip 里面简直是用 C 来写物件导向 和 design pattern 07/01 07:43