c++ - __int64 与 int - 内存管理

标签 c++ memory-management

我有一台 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/

相关文章:

c++ - 如何等到互斥体解锁?

c++ - 头文件中的 'keyword' 短语有什么作用?

ios - 如何使用自动引用计数(ARC)?

c++ - 如何在 C++ 中实现对私有(private)变量的访问?

c++ - 初始化指向结构语法的指针

c++ - 我是否只需要担心新的并将它们与删除相匹配?

c++ - 如果你给一个指针加1,它是真的加1,还是加4或32?

c++ - 可以将成员变量作为参数传递给 C++ 中的成员函数吗?

c++ - 请解释这个歧义?

c - 内存泄漏和无效读/写