容器&内存泄漏

时间:2016-02-11 15:34:06

标签: c++ memory memory-leaks containers

void foo()
{
    std::list<std::string> list;
    for (int i = 0; i < 10000000; ++i) 
    {
        std::string str ="text";
        list.push_back(str);
    }
    list.clear();
}

为什么在运行的func内存长大,但在exec之后这个func内存没有完全免费... 例如:在exec函数之前:6'000 kb,在运行函数:200'000 kb,在exec函数之后它是:9'000 kb ...有什么建议吗?

1 个答案:

答案 0 :(得分:0)

部分解决方法可能是使用内存池和自定义分配器。然后内存完全由您的应用程序处理。

对应的是你必须自己实现它并仔细处理它(你可以使用Boost.Pool来处理基本情况)。此外,如果您的应用程序在几个点上需要内存,您应该共享池,可能会处理碎片问题。