请问在VC++中如何检查自己的程序是否有内存泄露? 要想检查到memory leaks,必须包含<afx.h>头文件。如果不想包含<afx.h>头文件,可以用#pragma comment(lib, "mfc42ud.lib") 如果有内存泄露会在Debug的时候出提示 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 要想检查到memory leaks,必须包含<afx.h>头文件。如果不想包含<afx.h>头文件,可以用#pragma comment(lib, "mfc42ud.lib") 如果有内存泄露会有Debug调试 如果我根本就没用MFC,比如用ATL,那么应该如何检查那? 用Bounds Checker或者Rational Purify 按F5 让程序以Debug的形式运行,运行完以后,看下面的Output(输出)窗口,如果有泄漏,会有提示:memery leak ,后面跟着出错代码所在的行。 用下面的类检查,效果停好的,可以把它放在程序的前面;class FindMemoryLeaks{ _CrtMemState m_checkpoint;public: FindMemoryLeaks() { _CrtMemCheckpoint(&m_checkpoint); }; ~FindMemoryLeaks() { _CrtMemState checkpoint; _CrtMemCheckpoint(&checkpoint); _CrtMemState diff; _CrtMemDifference(&diff, &m_checkpoint, &checkpoint); _CrtMemDumpStatistics(&diff); _CrtMemDumpAllObjectsSince(&diff); };};使用时:int main(int argc, char* argv[]){ FindMemoryLeaks fml; int * p = new int; return 0;}按F5 让程序以Debug的形式运行,运行完以后,看下面的Output(输出)窗口,如果有泄漏,会有提示:memery leak ,后面跟着出错代码所在的行。 我建议你用工具来做BoundsChecker 6.0 for visual c++这个工具很好,很多大公司的开发部门都用这个(当然也有bcb,delphi的版本) Bounds Checker 好用purify不会 怎样将指针转为整数而没有警告 关于指针的问题 为什么INLINE没有展开呢? ado连接带密码的accsess,郁闷? 《》注册代码 如何调用lib而不是dll? 请问如何在对话框上,所有控件之上贴一幅位图? 困惑中。。谁能帮忙解决这个问题? 怎么回事?急 同样一个程序,为什摸不能在我机器上运行? 有没有针对win2k的dos 漏洞 可以编程练手的呢? 棘手问题:非活动窗口截获windows按键消息?
如果不想包含<afx.h>头文件,可以用#pragma comment(lib, "mfc42ud.lib")
如果有内存泄露会有Debug调试
用下面的类检查,效果停好的,可以把它放在程序的前面;
class FindMemoryLeaks
{
_CrtMemState m_checkpoint;
public:
FindMemoryLeaks()
{
_CrtMemCheckpoint(&m_checkpoint);
};
~FindMemoryLeaks()
{
_CrtMemState checkpoint;
_CrtMemCheckpoint(&checkpoint);
_CrtMemState diff;
_CrtMemDifference(&diff, &m_checkpoint, &checkpoint);
_CrtMemDumpStatistics(&diff);
_CrtMemDumpAllObjectsSince(&diff);
};
};
使用时:
int main(int argc, char* argv[])
{
FindMemoryLeaks fml;
int * p = new int;
return 0;
}
按F5 让程序以Debug的形式运行,运行完以后,看下面的Output(输出)窗口,如果有泄漏,会有提示:memery leak ,后面跟着出错代码所在的行。
BoundsChecker 6.0 for visual c++这个工具很好,很多大公司的开发部门都用这个(当然也有bcb,delphi的版本)
purify不会