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)代码>在程序开始时,以便在程序运行后自动生成内存泄漏报告。