还是输出内存泄漏问题

HelloDan 2010-12-23 10:11:49
昨天我问了一个关于内存泄漏的问题:
http://topic.csdn.net/u/20101222/14/756b5dc8-8f85-4045-998a-a839035e60f1.html


这样的确可以。


但我现在有一个问题,我创建了一个DLL, DLL工程是空白的Win32工程自己一步步写的。这样问题就来了,这样的工程也是没有提示内存泄漏的。 按照昨天的解决方法,同样是自己造成内存泄漏,我尝试了一下,发现还是有问题的,我的类的组织开式如下:

class WrapperClass
{
public:
WrapperClass(){}
~WrapperClass()
{
// _CrtDumpMemoryLeaks(); // 如果_CrtDumpMemoryLeaks();放在这里,如果按F5,
// 然后再按Shift+F5,还是没有内存泄漏提示。
// 但如果在运行中在WorkerClass中用exit(1)退出程序
// 这时就有内存泄漏提示。
}
Init(); //调用WorkerClass,初始化工作。
Term(); // 结束 WorkerClass
};

class WorkerClass; // 我将_CrtDumpMemoryLeaks();只放在这个类的析构函数中,
//其他地方(包括WrapperClassk )没有,
// 发现不管怎样运行都没有提示


但我要的结果是我按F5运行了,如果有内存泄漏,我再按Shift+F5退出也有内存泄漏提示。 这样能不能做到? 我上面的方法中有没有问题?谢谢!
...全文
189 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
HelloDan 2010-12-27
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 blonea 的回复:]

使用 _CrtSetReportFile函数,把错误和警告 输出到 txt里面
[/Quote]

其实输出到Output windows我也不介意的,我是要知道在按Shift+F5情况下怎样输出,不是输出到哪里啊。
HelloDan 2010-12-27
  • 打赏
  • 举报
回复
我的意思是说,在VC6里面BoundsChecker有用,但在VS2008里面的VC本身就有了这样的功能啊。所以用处不大了。

有没有更好的方法?
HelloDan 2010-12-27
  • 打赏
  • 举报
回复
我试用了一下BoundsChecker,发现跟VC里面的调试结束时输出的内存泄漏信息差不多啊,也是只能在正常退出时才有,按Shift+F5退出时没有的。 看不出有什么太大的优势。。。 我用的是VC6的版本,因为我只找到这个版本。

如果在我这种情况你们是怎样找的啊?
blonea 2010-12-25
  • 打赏
  • 举报
回复
使用 _CrtSetReportFile函数,把错误和警告 输出到 txt里面
足球中国 2010-12-24
  • 打赏
  • 举报
回复
用c#写。
有垃圾回复。
内存泄露,不怕不怕啦 。
Jimmy_Xia 2010-12-24
  • 打赏
  • 举报
回复
1. 打开IE
2. 地址栏输入www.google.com
3. 搜索框输入"VC 内存 泄漏工具"
4. 找到你需要的页面
=============================
另,长时间内存泄漏,可以通过运行一段时间(24小时)后查看程序所占用内存来辨别。工具么资源管理器就可以看。
Sou2012 2010-12-24
  • 打赏
  • 举报
回复
C#不错啊。
q1q2q3q4ln 2010-12-24
  • 打赏
  • 举报
回复
2010/11/29 熠彩扩展MFC类库更新了,隆重推出内存漏洞检测库,详细内容和下载,请参考 (http://yicai.pv.land.to/)
HelloDan 2010-12-24
  • 打赏
  • 举报
回复
没人遇到过这样的问题么???
HelloDan 2010-12-24
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 wwgddx 的回复:]

推荐 BoundsChecker
[/Quote]

Cow, 兔子党控制到村了? 农村包围城市吗?
HelloDan 2010-12-24
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 longlongagoimboy 的回复:]

1. 打开IE
2. 地址栏输入www.google.com
3. 搜索框输入"VC 内存 泄漏工具"
4. 找到你需要的页面
=============================
另,长时间内存泄漏,可以通过运行一段时间(24小时)后查看程序所占用内存来辨别。工具么资源管理器就可以看。
[/Quote]

长时间运行我也知道可以检测到,而且毫无疑问我将会这样做。 但那样只是找源头找起来不方便。 我还是先用了下工具再说吧。 如果有不会的再问你工具怎样用吧。 谢谢!
HelloDan 2010-12-24
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 wwgddx 的回复:]

推荐 BoundsChecker
[/Quote]

这个东西没有用过啊。我之前有下载一个VC6的。 也想试用一下。
wwgddx 2010-12-24
  • 打赏
  • 举报
回复
推荐 BoundsChecker
HelloDan 2010-12-24
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zanfeng 的回复:]

用c#写。
有垃圾回复。
内存泄露,不怕不怕啦 。
[/Quote]

晕~ 这样都行。。。
sichuanwww 2010-12-24
  • 打赏
  • 举报
回复
C#是个好东东。
HelloDan 2010-12-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xiaoxiaospace 的回复:]

~WrapperClass()


你的这个类是否有被其他类继承?
如果有的话,就是这个析构函数的问题了,改成virtual ~WrapperClass()
就是了,否则,看这点代码,真看不出问题
[/Quote]

没有。。。 其实也就只有这么一点代码,没有太多的。
xiaoxiaospace 2010-12-23
  • 打赏
  • 举报
回复
~WrapperClass()


你的这个类是否有被其他类继承?
如果有的话,就是这个析构函数的问题了,改成virtual ~WrapperClass()
就是了,否则,看这点代码,真看不出问题
HelloDan 2010-12-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 luciferstar 的回复:]

程序退出的时候,DLL是否正确退出?
上次调用金山卫士的DLL,没退出进程,我就终止了自己的程序,结果泄露了。
[/Quote]

我这里是要输出泄漏,不是为了查找泄漏,那内在泄漏是我故意造成的。 主要是看那样有没有提示泄漏。。。
LuciferStar 2010-12-23
  • 打赏
  • 举报
回复
程序退出的时候,DLL是否正确退出?
上次调用金山卫士的DLL,没退出进程,我就终止了自己的程序,结果泄露了。
HelloDan 2010-12-23
  • 打赏
  • 举报
回复
我自己找了一个MFC dialog来试,如果我按F5运行了,如果有内存泄漏,我再按Shift+F5退出也是没有提示的。只有让窗口退出才有提示。

但是如果是窗口的就好办,但是我的是服务程序,没有窗口的,所以那样是没法提示的。这样我写程序怕有内存泄漏,找起来好麻烦啊。 要将程序挂到窗口上测试等。
加载更多回复(2)

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧