Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 映射类导致内存泄漏 intmain() { 地图x; x[“海瑟姆”]=“000@hotmail.com"; x、 清除(); _CrtDumpMemoryLeaks(); 返回0; }_C++_Maps - Fatal编程技术网

C++ 映射类导致内存泄漏 intmain() { 地图x; x[“海瑟姆”]=“000@hotmail.com"; x、 清除(); _CrtDumpMemoryLeaks(); 返回0; }

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

当我测试该程序的内存泄漏时,检测到输出 内存泄漏

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

对象转储完成


这个问题是,您调用的函数检查内存泄漏的时间过快。
映射
尚未在您调用
的点处销毁

将代码更改为:

 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;
}