用Visual Studio2005自动完成C++编程时的内存泄漏检查
2007-08-23 19:12
239 查看
让程序自动检测内存泄漏的问题很简单,只需
#include <crtdbg.h>
在main函数里开头部分加入:
_CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF | _CRTDBG_ALLOC_MEM_DF);
_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
_CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDOUT);
这样一旦发生内存泄漏的现象,在标准输出中就会有显示。举个例子:
#include <cstring>
#include <crtdbg.h>
#include <iostream>
using namespace std;
class A
{
private:
char* name;
public:
A(char* name = "lcrystal")
{
this->name = new char[strlen(name) + 1];
}
// ~A()
// {
// delete[] name;
// }
};
int main()
{
_CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF | _CRTDBG_ALLOC_MEM_DF);
_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
_CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDOUT);
A a("abc");
return 0;
}
运行后由于存在内存泄漏会给出相应提示,如果将析构函数的注释去掉,就不会有任何提示了。
#include <crtdbg.h>
在main函数里开头部分加入:
_CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF | _CRTDBG_ALLOC_MEM_DF);
_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
_CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDOUT);
这样一旦发生内存泄漏的现象,在标准输出中就会有显示。举个例子:
#include <cstring>
#include <crtdbg.h>
#include <iostream>
using namespace std;
class A
{
private:
char* name;
public:
A(char* name = "lcrystal")
{
this->name = new char[strlen(name) + 1];
}
// ~A()
// {
// delete[] name;
// }
};
int main()
{
_CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF | _CRTDBG_ALLOC_MEM_DF);
_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
_CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDOUT);
A a("abc");
return 0;
}
运行后由于存在内存泄漏会给出相应提示,如果将析构函数的注释去掉,就不会有任何提示了。
相关文章推荐
- cocos2d自动检查内存泄漏
- 基于 jQuery+PHP+Mysql实现输入自动完成提示
- jQuery Autocomplete自动完成插件代码应用
- 自动完成
- 在浏览器控件中启用自动完成功能
- WinForm载入窗体完成后自动执行事件
- EditPlus的编码自动完成功能及配置文件下载
- 输入自动完成类
- asp.net 点击一个按钮弹出对话框选择文件然后选择文件完成之后就自动上传文件 input(file)
- 基于jquery的自动完成插件jquery.autocomplete.js
- jQuery实现用户输入自动完成功能
- jQuery的Ajax的自动完成功能控件
- 应用程序检查必要的文件和自动注册控件
- AJAX实例:根据邮编自动完成地址信息
- 安卓高级组件----自动完成文本框
- Notepad++代码自动完成(jQuery版)
- 自动生成控制文件及数据文件并完成sqlldr的自动导入
- 转载:Solr的自动完成实现方式(第一部分:facet方式)
- c# 安装部署完成后自动启动程序
- Android 内存泄漏的简单检查与分析方法