pipi0907 发表于 2010-11-30 11:02:28

关于ACE例子程序内存泄露问题

我做一个Server的控制台程序,当程序从VC2008里面按“运行”启动后,控制台停留在界面上,如果这时关闭控制台,会发现VC2008的调试窗口出现
Detected memory leaks!
Dumping objects ->
{182} normal block at 0x003DCEB0, 8 bytes long.
Data: <=   > 20 C6 3D 00 CD CD CD CD
...
之类的内存泄露提示,由于找不到原因,所以我试着运行ACE自带的例子程序,我运行了
..\ACE+TAO+CIAO-5.8.0\ACE_wrappers\examples\C++NPv1下的C++NPv1_PPC_Logging_Server工程和C++NPv1_Iterative_Logging_Server工程,都是先设置好监听端口,然后从IDE中运行程序,接着手动关闭控制台程序,结果我就看见了调试窗口的
Detected memory leaks!
Dumping objects ->
.....
这是什么原因呢,为什么自带的例子也会有内存泄露呢?大家的程序如果按照我这样的操作是怎么避免内存泄露的呢

pipi0907 发表于 2010-11-30 11:21:38

补充一点,我编译ACE时加了宏“#define ACE_HAS_MFC 1”,但是我的写的是个动态库,在控制台里面调用,这个动态库是标准的Windows动态库,不是MFC的,请问这样是不是会有问题

mindstrong 发表于 2010-11-30 11:33:44

不是很了解你的问题。

如果使用ACE自带的例子,一般不会出现类似的内存泄露的问题,除非有些东西经过自己改造之后,由于对ACE内部实现的不了解,导致资料回收不充分的原因,可能会导致 内存泄漏,除此之处,可能性不大。

另外,ACE的示例代码,有时候做的singleton对象出来之后,在进程退出之前,未做Fini工作的话,仍然会被内存检测工作报出内存泄漏出来 的。你可以排查一下。
页: [1]
查看完整版本: 关于ACE例子程序内存泄露问题