c++ - C++(VS2008)中的内存释放

标签 c++

请看下面的 C++ 代码:

#include <iostream>
#include <vector>
#include <queue>

using namespace std;

class Buf
{
public:
    Buf(size_t size)
    {
        _storage.reserve(size);
    }
    ~Buf()
    {
        vector<int> temp;
        _storage.swap( temp );//release memory
    }
    vector<int> _storage;
};

int main()
{
    int i = 0;
    while( ++i < 10000)
    {       
        Buf *buf = new Buf(100000);
        delete buf;
    }

    return 0;
}

我在 Debug模式下运行它(VS2008):当我在行中设置一个断点时

//main function
int i = 0;

我在Windows任务管理器中发现Process MyProgram.exe占用了大约300KB的内存。当我在该行设置断点时

return 0;

进程 MyProgram.exe 在 Windows 任务管理器中占用大约 700KB。

我的问题是:为什么程序占用的内存增加了?我想我正好释放了内存~为什么?

最佳答案

标准内存分配器不会(通常)在您释放内存时将内存释放给操作系统。相反,它会保留它用于您流程的后续分配。

因此,即使您解除分配,您也看不到 TM 中的内存使用量减少。

关于c++ - C++(VS2008)中的内存释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13359738/

相关文章:

C++ 虚拟析构函数

c++ - 如何在 Visual Studio 2010 中创建非托管 C++ 项目?

C++:加入一个 WCHAR[] 数组?

c++ - 求负数的下一个 2 的幂

c++ - 在 C++ 中复制数组的一个问题

c++ - 如何反转字符数组并将它们存储在新文件中?

c++ - 企业架构师错误 : Unexpected symbol fix?

c++ - 访问类中定义的 friend 功能

c++ - 索引字符串和国际化

c++ - 如何使用 OpenSSL 测量 C++ Curl 中的握手时间?