C++ 使用std::list时内存泄漏

C++ 使用std::list时内存泄漏,c++,stdlist,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(); _CrtDumpMemoryLe

如何从
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();
}
\define\u CRTDBG\u MAP\u ALLOC
#包括
#包括
#包括
#包括
使用名称空间std;
void main()
{
清单a;
a、 清除();
_CrtDumpMemoryLeaks();
}
当我尝试运行它时,它显示一些内存泄漏


那么,如何删除它呢?

可能没有内存泄漏。报告告诉您的是内存尚未释放,这是事实。在运行
\u CrtDumpMemoryLeaks()
之后,它将在当前作用域结束时解除分配

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

void main()
{
    {
        list<int> a;
        a.clear();
    }
    _CrtDumpMemoryLeaks();
}
void main()
{
{
清单a;
a、 清除();
}
_CrtDumpMemoryLeaks();
}

注意
容器移动到它自己的作用域。

可能没有内存泄漏。报告告诉您的是内存尚未释放,这是事实。在运行
\u CrtDumpMemoryLeaks()
之后,它将在当前作用域结束时解除分配

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

void main()
{
    {
        list<int> a;
        a.clear();
    }
    _CrtDumpMemoryLeaks();
}
void main()
{
{
清单a;
a、 清除();
}
_CrtDumpMemoryLeaks();
}

注意
a
容器在其自身范围内的移动。

我建议只执行
\u crtsetdbglag(\u CRTDBG\u ALLOC\u MEM\u DF | \u CRTDBG\u LEAK\u CHECK\u DF)在程序开始时,以便在程序运行后自动生成内存泄漏报告。我建议只执行
\u crtsetdbglag(_CRTDBG\u ALLOC\u MEM\u DF | _CRTDBG\u leak\u CHECK\u DF)在程序开始时,以便在程序运行后自动生成内存泄漏报告。