关于ACE_Message_Block内存泄漏的问题求助
void *func(void *arg){
int count = 0;
while(count++ < SIZE * SIZE)
{
ACE_Message_Block *msg = new ACE_Message_Block(SIZE);
msg->release();
}
return NULL;
}
使用ACE的时候,如上代码若放在线程函数中(使用ACE_Thread::spawn_n创建的线程),执行结束后用purify会看到很多内存泄漏(泄漏的大小和启动的线程数有关,线程越多,泄漏越多)。但是如果使用单线程调用上述代码就不会有泄漏。
哪位知道原因么,怎样解决?
另外,哪怕程序中什么都不做,也会ACE_Object_Manager中创建的内存没有释放,怎么办? 我认为不会有泄漏,你误判了。
使用debug的调试,purify和boundschecker经常误报,因为new操作符被重载了,导致计算错误。每次都是什么global_new_xxxx引起的。
你用release的测试,就不会有了。
页:
[1]