【问题标题】:Why only three memory addresses are shown in memory leak?为什么内存泄漏中只显示三个内存地址?
【发布时间】: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


【解决方案1】:

包含 windows.h “我假设你在 windows 盒子上运行它” *与 linux 相比,windows 中的内存管理要智能得多。

尝试在 linux 中运行相同的程序并重新绘制图形以查看差异

【讨论】:

    猜你喜欢
    • 2011-10-22
    • 2012-06-20
    • 2023-03-27
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    相关资源
    最近更新 更多