map类导致内存泄漏

时间:2014-11-17 19:27:14

标签: c++ maps

 int main()
    {
    map<string,string> x;
    x["Haitham"]="000@hotmail.com";
    x.clear();

    _CrtDumpMemoryLeaks();
    return 0;
    }
  

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

     

{152}正常块,位于0x0070ABD8,长度为8个字节。

     

数据:&lt; 4 p&gt; 34 AB 70 00 00 00 00 00

     

{151}正常块,位于0x0070AB90,长度为8个字节。

     

{150}正常块,位于0x0070AB08,长度为72个字节。

     

数据:&lt; p p`p&gt; 60 A9 70 00 60 A9 70 00 60 A9 70 00 01 00 CD   CD

     

{145}正常阻塞位于0x00704C40,长度为8个字节。

     

数据:&lt; ^&gt; E4 FE 5E 00 00 00 00 00

     

{144}正常阻塞位于0x0070A960,72个字节长。

     

数据:&lt; p p p> 08 AB 70 00 08 AB 70 00 08 AB 70 00 01 01 CD   CD

     

数据:&lt; p> 18 AB 70 00 00 00 00 00

     

对象转储完成。

1 个答案:

答案 0 :(得分:2)

这个问题是你正在调用过早检查内存泄漏的函数。 map在您拨打_CrtDumpMemoryLeaks时尚未销毁。

将您的代码更改为:

int main()
{
    {
        map<string,string> x;
        x["Haitham"]="000@hotmail.com";
        x.clear();
    }
    _CrtDumpMemoryLeaks();
    return 0;
}

现在应该显示map已被删除,因为它是{ }块的本地。