使用 std::list 时内存泄漏

Memory leak when using std::list

本文关键字:内存 泄漏 list std 使用      更新时间:2023-10-16

如何从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容器在其自身范围内的移动。