找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 4355|回复: 1

关于ACE_Message_Block内存泄漏的问题求助

[复制链接]
发表于 2007-12-31 22:18:10 | 显示全部楼层 |阅读模式
  1. void *func(void *arg)
  2. {
  3.     int count = 0;
  4.     while(count++ < SIZE * SIZE)
  5.     {
  6.         ACE_Message_Block *msg = new ACE_Message_Block(SIZE);     
  7.         msg->release();
  8.     }
  9.     return NULL;   
  10. }
复制代码

使用ACE的时候,如上代码若放在线程函数中(使用ACE_Thread::spawn_n创建的线程),执行结束后用purify会看到很多内存泄漏(泄漏的大小和启动的线程数有关,线程越多,泄漏越多)。但是如果使用单线程调用上述代码就不会有泄漏。
    哪位知道原因么,怎样解决?
另外,哪怕程序中什么都不做,也会ACE_Object_Manager中创建的内存没有释放,怎么办?
 楼主| 发表于 2007-12-31 22:18:21 | 显示全部楼层
我认为不会有泄漏,你误判了。
使用debug的调试,purify和boundschecker经常误报,因为new操作符被重载了,导致计算错误。每次都是什么global_new_xxxx引起的。
你用release的测试,就不会有了。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-11-22 07:11 , Processed in 0.035557 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表