容器和内存泄漏

Containers & memory leak

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 func 之前:6'000 kb,在 运行 func:200'000 kb,在 exec func 之后是:9'000 kb...有什么建议吗?

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

对口就是自己去实现,小心处理(基本情况可以用Boost.Pool)。此外,如果您的应用程序在多个方面对内存要求很高,您应该共享池,可能会处理碎片问题。