C ++ for循环导致内存泄漏?

冉·肖罗维兹(Ran Shorowitz)

我有一个用C ++制作的游戏服务器,最近我注意到内存数量在不断增长。

我启动服务器,然后打开任务管理器(Windows 7)并查看其内存。内存可以正常使用约20秒钟,但之后它会上升并且不会停止。

我缩小了执行此操作的代码:

for(std::vector<Door>::iterator door = myMap()->doors.begin(); door != myMap()->doors.end(); ++door){

}

我什至不需要for循环内的任何代码,这是有内存泄漏的代码。但是,内存泄漏可能是什么?这是遍历矢量对象的标准循环。

上面的代码在一个函数调用中运行,该函数调用通过单独线程上的while循环更新。如果我注释掉该代码,则内存计数很好。

编辑:myMap()定义:

Map* Player::myMap(){
    if(mapList == NULL){
        //cout << "mapList was NULL" << endl;
        return NULL;
    }

    //std::map<std::string, Map*> &myMapList = *mapList;

    //cout << "getting my map: " << (*mapList)["f1"]->blocks.at(0).x << endl;
    return (*mapList)[strdup(room.c_str())];
}

如果需要提供其他代码,请告诉我。

温达

现在,您已提供的定义myMap,我可以告诉您,内存泄漏来自对的调用strdup此函数返回的指针应该被释放(通过调用free),因为它调用malloc

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章