C++ 映射类导致内存泄漏 intmain() { 地图x; x[“海瑟姆”]=“000@hotmail.com"; x、 清除(); _CrtDumpMemoryLeaks(); 返回0; }
当我测试该程序的内存泄漏时,检测到输出 内存泄漏 0x0070ABD8处的{152}正常块,8字节长 数据:34 AB 70 00 00 0x0070AB90处的{151}正常块,8字节长 0x0070AB08处的{150}正常块,72字节长 数据:60 A9 70 00 60 A9 70 00 60 A9 70 00 01 00 CD 光盘 0x00704C40处的{145}正常块,8字节长 数据:<^>E4 FE 5E 00 0x0070A960处的{144}正常块,72字节长 数据:08 AB 70 00 08 AB 70 00 08 AB 70 00 01 01 CD 光盘 数据:18 AB 70 00 00 对象转储完成C++ 映射类导致内存泄漏 intmain() { 地图x; x[“海瑟姆”]=“000@hotmail.com"; x、 清除(); _CrtDumpMemoryLeaks(); 返回0; },c++,maps,C++,Maps,当我测试该程序的内存泄漏时,检测到输出 内存泄漏 0x0070ABD8处的{152}正常块,8字节长 数据:34 AB 70 00 00 0x0070AB90处的{151}正常块,8字节长 0x0070AB08处的{150}正常块,72字节长 数据:60 A9 70 00 60 A9 70 00 60 A9 70 00 01 00 CD 光盘 0x00704C40处的{145}正常块,8字节长 数据:E4 FE 5E 00 0x0070A960处的{144}正常块,72字节长 数据:08 AB
这个问题是,您调用的函数检查内存泄漏的时间过快。
映射
尚未在您调用的点处销毁
将代码更改为:
int main()
{
map<string,string> x;
x["Haitham"]="000@hotmail.com";
x.clear();
_CrtDumpMemoryLeaks();
return 0;
}
intmain()
{
{
地图x;
x[“海瑟姆”]=“000@hotmail.com";
x、 清除();
}
_CrtDumpMemoryLeaks();
返回0;
}
现在,这应该表明映射
已被分解,因为它是{}
块的本地部分。尝试在引用映射
的3行周围添加一组额外的大括号(或将它们移动到另一个函数)。请陈述一个明确的问题,而不仅仅是在调用转储函数时的一些代码和标题单元格,x
仍然存在。因此,内部map
分配当然会被视为泄漏。。。
int main()
{
{
map<string,string> x;
x["Haitham"]="000@hotmail.com";
x.clear();
}
_CrtDumpMemoryLeaks();
return 0;
}