游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1762|回复: 1

map内存泄露

[复制链接]

125

主题

364

帖子

396

积分

中级会员

Rank: 3Rank: 3

积分
396
QQ
发表于 2008-5-16 01:04:00 | 显示全部楼层 |阅读模式
我定义了一个全局map<int, string>   testmap;
结果导致内存泄露, 我该怎么删除掉它呢。

125

主题

364

帖子

396

积分

中级会员

Rank: 3Rank: 3

积分
396
QQ
 楼主| 发表于 2008-5-16 01:11:00 | 显示全部楼层

Re:map内存泄露

原来是误报,我用了下面这个类来检测是否内存泄露。
#define CRTDBG_MAP_ALLOCA
#include <crtdbg.h>
class memcheck{
public:
        memcheck(){}

        virtual ~memcheck(){
                std::cout<<"~memcheck is cleared?"<<endl;
                _CrtDumpMemoryLeaks();
        }
}; // end class

然后我这么在主函数写的
map<string, int>   tbl;

int main()
{
       
    memcheck   m;       
    return 0;
}
由于memcheck是主函数内定义的第一个对象,所以它的析构函数将在最后程序结束前被调用,于是
就会检测到是否有内存泄露。
这样写的话果然就报告出map内存泄露了。

但是如果我这样写内存泄露就没有了。
memcheck   m;       
map<string, int>   tbl;

int main()
{
    return 0;
}
也就是让memcheck定义在所有对象之前,而如果我颠倒下顺序则又显示map内存泄露了。
不知道哪位高手分析一下原因。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-22 12:57

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表