使用 std::list 时内存泄漏

Memory leak when using std::list

如何消除 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();
}

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

那么,如何去除呢?

可能没有内存泄漏。报告告诉你的是内存还没有被释放,这是真的。它将在当前范围的末尾被释放 - 在 _CrtDumpMemoryLeaks() 具有 运行.

之后

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

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

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