首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

什么情况下不适合申请堆内存?解决方法

2012-02-22 
什么情况下不适合申请堆内存?请问高手什么情况下不适合申请堆内存?比如 在协议实现时,我在一个事件前申请

什么情况下不适合申请堆内存?
请问高手什么情况下不适合申请堆内存?
比如 在协议实现时,我在一个事件前申请堆内存,但最终由另一个模块释放。
如果协议运行中出问题,那个模块没有释放内存,不就会产生内存泄露吗?这种情况怎么办

[解决办法]
在协议中添加“事务”原语。
[解决办法]
你说的协议是什么协议,能举个例子吗?

协议里面你说的这种情况,我们的处理方法是用mailbox
[解决办法]
可以使用智能指针
[解决办法]
那没有办法(因为我们尽可能的0拷贝)。 只能靠模块与模块间好好配合,考虑多个因数的发生
[解决办法]
mailbox ?ecos里的?
[解决办法]
Trillium和Spatial
[解决办法]
请问高手什么情况下不适合申请堆内存? 
比如 在协议实现时,我在一个事件前申请堆内存,但最终由另一个模块释放。 
如果协议运行中出问题,那个模块没有释放内存,不就会产生内存泄露吗?这种情况怎么办
==================================================================================
在事件A之前申请了内存,如:
XXXX AEvent->p = malloc(sizeof(XXXX));
传递给事件B之后应该又事件B的某个成员接收并使用:
B->p = (XXXX*)AEvent->p;
(如果B不接收并且不使用,那就不需要传递。就地释放...)
然后再DeleteB或者ReleseB中判断:
if (B->p != NILL) {
free(B->p);
}

热点排行