使用 CRT 库查找内存泄漏
内存 查找 泄漏 CRT 使用
2023-09-27 14:28:31 时间
使用 CRT 库查找内存泄漏 - Visual Studio (Windows) | Microsoft Docs
#define _CRTDBG_MAP_ALLOC // 显示跟详细,显示首次分配泄漏的内存的文件名和行号
#include <stdlib.h>
#include <crtdbg.h>
#include <iostream>
#include <string>
using namespace std;
int main()
{
int* p = (int*)malloc(sizeof(int));
free p;
_CrtDumpMemoryLeaks(); // 在应用退出时显示内存泄漏报告
return 0;
}
对于C++中new/delete也可以使用上述操作方法,唯一的缺陷就是输出的报告中不展示泄露所在的文件中代码所在行数。
docs.microsoft 给出的方法是,使用下列宏来报告执行分配的行。
// debug_new.cpp
// compile by using: cl /EHsc /W4 /D_DEBUG /MDd debug_new.cpp
#define _CRTDBG_MAP_ALLOC
#include <cstdlib>
#include <crtdbg.h>
#ifdef _DEBUG
#define DBG_NEW new ( _NORMAL_BLOCK , __FILE__ , __LINE__ )
// Replace _NORMAL_BLOCK with _CLIENT_BLOCK if you want the
// allocations to be of _CLIENT_BLOCK type
#else
#define DBG_NEW new
#endif
struct Pod {
int x;
};
void main() {
Pod* pPod = DBG_NEW Pod;
pPod = DBG_NEW Pod; // Oops, leaked the original pPod!
delete pPod;
_CrtDumpMemoryLeaks();
}
相关文章
- idea设置java内存
- SQL Server 占用内存太高,查找占用内存高以及影响其性能的sql语句及解决方法
- 如何让你的内存中的 NoSQL 数据存储适合企业级应用
- 软件事务内存导论(八)提交和回滚事件
- 使用google perf工具来排查堆外内存占用
- jmap命令详解----查看JVM内存使用详情
- RocketMQ 就是耗内存
- Android JNI编程(五)——C语言的静态内存分配、动态内存分配、动态创建数组
- Android中使用Handler造成内存泄露的分析和解决
- Android内存泄漏分析及调试
- hql查询语句 内存中的情况,fetch迫切查询关键字
- 内存缓存 Gcache VS Caffeine源码详解
- 性能优化8--内存泄露
- CPU内存不足分析Gitlab的内存消耗
- Dell提高系统价格以面对内存及SSD短缺加剧难题
- 预备革新内存的新技术