独来读网 发表于 2012-7-5 17:54:46

关于ACE内存泄露的疑问

config.h文件
#define ACE_HAS_STANDARD_CPP_LIBRARY 1 //!<用于标准C++跨平台
#define ACE_HAS_MFC   1
#include "ace/config-win32.h" //!<在WIN32环境下使用ACE
编译出的aced.lib与aced.dll

我在win7里,基于vs2010的MFC
我就调用了ACE::init();    ACE::fini();
Detected memory leaks!
Dumping objects ->
{24623} normal block at 0x021D7290, 44 bytes long.
Data: <      s         > 00 00 00 00 F8 ED 73 00 FF FF FF FF 00 00 00 00
{24622} normal block at 0x021D7CA0, 28 bytes long.
Data: <8 v             > 38 B2 76 00 FF FF FF FF 00 00 00 00 00 00 00 00
Object dump complete.
The program ' CenterServer.exe: Native' has exited with code 0 (0x0).

要是我把ACE::init();    ACE::fini();注释掉,就没有内存错误,这是为什么,难道ACE内部有问题?

独来读网 发表于 2012-7-6 06:36:35

软件运行了5个小时了,通过6个客户端不断地向服务器发送消息,服务器端接收并处理消息(输出到自带的output窗口中),没有发现内存有增加的情况.但关闭软件运行,vs2010输出窗口上就会出现内存leak的问题,难道这是ACE的通病?我查了相关资料,
1)网上有人说这是因为MFC里对new,和delete重载的问题
2)也有人说这是ACE与MFC字符解释的问题.
到底是什么问题导致的呢?
这是为什么呢?

winston 发表于 2012-7-6 16:42:34

99%的估计,还是你程序有问题。
ACE的代码,可靠性非常高,因为有大量的人用,每天都有自动的回归测试。但为何还会有内存泄漏?

其实因为C++语言的问题,还有OS的设计缺陷,导致一些情况下,很难避免一次性的内存泄漏,注意是一次性的。但程序结束的时候,会自动的全部回收,实质上并不影响用户的使用和软件质量。只要避免产生持续不断的内存泄漏就可以接收了。

对于反复产生的内存泄漏,如果难以查到根源,建议使用工具来测试,比较方便和快速。

独来读网 发表于 2012-7-8 17:27:55

winston 发表于 2012-7-6 16:42 static/image/common/back.gif
99%的估计,还是你程序有问题。
ACE的代码,可靠性非常高,因为有大量的人用,每天都有自动的回归测试。但 ...

你好,管理员,要是这样的话,我是否可以这样理解:一次性的内存泄露不会使操作系统出问题?因为可能这个软件一开就是半年或1年不重启.

winston 发表于 2012-7-8 23:35:38

独来读网 发表于 2012-7-8 17:27 static/image/common/back.gif
你好,管理员,要是这样的话,我是否可以这样理解:一次性的内存泄露不会使操作系统出问题?因为可能这个软件 ...

只要不是一次性干掉系统的大量内存,一点点不会有问题。看过windows开发历史就会明白,OS自己经常都有问题,很多都是迁就原来的错误、妥协造成的。

☼_Andy_☽ 发表于 2012-10-22 16:03:09

我也刚写了一个程序也很简单 跟楼主的一样,运行时没有内存错误,退出时也有内存错误。
后来照着PurenessScopeServer项目的配置,配置了一下就好了,运行退出都没有内存错误了。
建议楼主去看看PurenessScopeServer项目。

steven99ca 发表于 2012-11-15 06:17:04

Sometimes there's no way to clean the memory perfectlywhen you get lots of static and singleton membersinvolved.No need to worry about code like below, however it's bad practice.
void main()
{
char * Imok=new char;
}

nettoobad 发表于 2013-2-11 23:45:20

版主应该建立一个经典错误置顶帖。以后这些问题就不会重复出现了。嘿嘿:lol:lol
页: [1]
查看完整版本: 关于ACE内存泄露的疑问