peakzhang 发表于 2007-12-31 22:18:10

关于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中创建的内存没有释放,怎么办?

peakzhang 发表于 2007-12-31 22:18:21

我认为不会有泄漏,你误判了。
使用debug的调试,purify和boundschecker经常误报,因为new操作符被重载了,导致计算错误。每次都是什么global_new_xxxx引起的。
你用release的测试,就不会有了。
页: [1]
查看完整版本: 关于ACE_Message_Block内存泄漏的问题求助