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 ...有什么建议吗?
答案 0 :(得分:0)
部分解决方法可能是使用内存池和自定义分配器。然后内存完全由您的应用程序处理。
对应的是你必须自己实现它并仔细处理它(你可以使用Boost.Pool来处理基本情况)。此外,如果您的应用程序在几个点上需要内存,您应该共享池,可能会处理碎片问题。