【发布时间】:2014-10-24 21:28:17
【问题描述】:
我编写了以下代码来故意造成内存泄漏。
#include <windows.h>
int main(int argc, char* argv[])
{
while(1)
{
char *ch1 = new char[10];
char *ch2 = new char[5];
char *ch3 = new char[2];
Sleep(5);
}
return 0;
}
我使用 LeakDiag 记录日志并使用 LDGrapher 制作以下图表。
现在,我的问题是为什么泄漏图中只显示三个地址?我一直在while(1) 中创建新指针,所以我在很多地址处泄漏内存?
【问题讨论】:
-
大概泄漏是由调用站点汇总的?
-
@KerrekSB 对不起,我没听懂。
-
代码中有 3 个地方会泄漏内存。你看这三个地方。它们是代码地址,而不是数据地址。由于 /ZI 编译选项,它们差别很大。
-
@HansPassant +1 如果它可以在答案部分,我会接受它作为答案。谢谢。
标签: c++ memory memory-leaks profiling memory-leak-detector