我有一个非常简单的问题,但是我似乎被困住了。请查看以下代码:
CArray<double, double&> arr;
arr.SetSize(50000);
for(int i =0; i< 50000; i++)
{
arr[i] = (i+2)*3.14f;
}
arr.RemoveAll();
我认为在调用
RemoveAll()
之后,内存应该会被释放,但实际上似乎并没有发生。为了检查内存占用情况,请打开任务管理器并观察你的exe内存。在调用arr.SetSize()
时,它会增加,但即使arr
超出作用域,它也永远不会减少。有人能解释一下吗?
std::vector
几乎肯定需要分配一个新缓冲区并删除旧缓冲区,因为分配器接口没有realloc()
能力。 - In silico