使用std :: list时内存泄漏

时间:2016-01-27 08:59:32

标签: c++ stdlist

如何从std::list删除内存泄漏?

这只是示例代码:

#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>

#include <iostream>
#include <list>
using namespace std;

void main()
{
    list<int> a;
    a.clear();
    _CrtDumpMemoryLeaks();
}

当我尝试运行它时,它会显示一些内存泄漏。

那么,如何删除它?

1 个答案:

答案 0 :(得分:7)

可能没有内存泄漏。报告告诉你的是,内存尚未被释放,这是事实。它将在当前范围的末尾解除分配 - 在_CrtDumpMemoryLeaks()运行之后。

更改代码如下;它会为您提供更准确的答案:

void main()
{
    {
        list<int> a;
        a.clear();
    }
    _CrtDumpMemoryLeaks();
}

请注意a容器移动到自己的范围。

相关问题