找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 3518|回复: 1

ace 内存管理有意思的问题

[复制链接]
发表于 2007-12-19 22:10:11 | 显示全部楼层 |阅读模式
  1. #include "ace/os.h"
  2. #include <memory>
  3. class aaa
  4. {
  5. private:
  6. char * m_data;
  7. unsigned int m_size;
  8. public:
  9. aaa(unsigned int size)
  10. {
  11.   m_data = new char[size];
  12.   m_size = size;
  13. }
  14. ~aaa()
  15. {
  16.   delete m_data;
  17. }
  18. int put()
  19. {
  20.   return m_size;
  21. }
  22. };
  23. int main (int argc, char *argv[])
  24. {
  25. for(int i = 0; i < 1000;i++)
  26. {
  27.   std::auto_ptr<aaa> a(new aaa(i * 1024));
  28.   //aaa * a = new aaa(1024 * 1024);
  29.   //char * a = new char[1024 * 1024];
  30.   printf("%d",a->put()/1024);
  31.   
  32.   ACE_OS::sleep(1);
  33. }
  34. ACE_OS::sleep(1000);
  35. }
复制代码
使用 windows 的任务管理器查看内存变化,
2772->398->8419->298.......
是 ace 接管有内存池,还是操作系统内存管理很有意思
 楼主| 发表于 2007-12-19 22:10:21 | 显示全部楼层
这个是你释放失败导致~aaa()
{
  delete[] m_data;
}
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

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

GMT+8, 2024-5-20 03:34 , Processed in 0.026301 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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