我有一台 Win XP 32 位机器。我正在使用 Visual C++ 语言来测试这个场景。 我创建了一个 vector ,例如 vector<__int64> v 。我记下虚拟内存,现在说它是 400 KB。然后我将大约 500 万个整数插入其中。现在我注意到虚拟内存,它增加到大约 900 KB。现在我调用 vector 上的 erase 或 clear。现在我检查虚拟内存为 600 KB。
我用 int v 的 vector 尝试相同的场景。这次我在填充 vector 之前和刷新 vector 之后获得了确切的内存量。
为什么内存会有差异?
来自评论: SmartHeap被使用。
最佳答案
除了回答内存并不总是释放给操作系统之外,您的测试也可能受到以下事实的影响:从 vector 中删除元素或清除 vector 不会减少 vector 分配的缓冲区大小。
为了保证内存的释放,确保你的 vector 超出范围,或者使用一个临时 vector :
{
std::vector<__int64> temp;
v.swap(temp);
}
关于c++ - __int64 与 int - 内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1211164/