闲云流水的点点滴滴

不同模块间内存分配的新方法

   在大型软件中,不同模块之间或者调用第三方模块函数时,由于相互之间的内存管理方式不同。所以当相互之间有数据通讯时,就会碰到谁分配内存,谁释放内存的问题。
   一般的处理方式是调用者先获取需要分配的内存大小,然后分配内存,再把分配的内存指针作为参数传入被调用函数。这个处理方式有一个缺点,需要调用两次相同的函数。
    自认为有一个比较好的方式,只需要调用一次函数就可以完成以上功能。就是在调用函数时多一个内存分配的callback函数,这个callback用来分配内存。由被调用函数调用,被调用在调用内存分配callback时,会传入需要分配内容的长度。

    例如,BModule模块有一个BFunction1函数供AModule调用,BFunction1的原型就可以如下设计:

#define void* (*Fn_MallcCallback)(void *pvUserdata,int iMallocLength);

int BFunction1(void **ppBuffer,Fn_MallcCallback pfnMallcCB,void *pvUserData)

ppBuffer是输出参数。
pvUserData是内存分配callback的用户数据,会原封不动地传给内存分配callback.

posted on 2007-10-24 13:56 闲云流水 阅读(353) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。