我发现即使在我的程序中释放内存后,使用的内存量也会增加。所以我写了两个简单的 C++ 测试程序来验证它。
#define NUM 1000000
void Test1()
{
    PrintMemory("Test1 Beginning");
    double* Data = new double[NUM];
    for(int i = 0; i < NUM; i++)
    {
        Data[i] = std::rand() % 1000;
    }
    double sum = 0;
    for(int i = 0; i < NUM; i++)
    {
        sum += Data[i];
    }
    delete [] Data;
    PrintMemory("end");
}
double* Data[NUM];
void Test2()
{
    PrintMemory("Test2 Beginning");
    for(int i = 0; i < NUM; i++)
    {
        Data[i] = new double;
        *(Data[i]) = std::rand() % 1000;
    }
    double sum = 0;
    for(int i = 0; i < NUM; i++)
    {
        sum += *(Data[i]);
    }
    for(int i = 0; i < NUM; i++)
    {
        delete Data[i];
    }
    PrintMemory("end");
}
void main()
{
    Test1();
    Test2();
}
在函数中PrintMemory,我调用 APIGetProcessMemoryInfo来获取有关已用内存的信息,即PrivateUsage结构的字段PROCESS_MEMORY_COUNTERS_EX。
输出如下:
MemUsed:Test1 开始
时为 5544kb MemUsed:结束时
为 5568kb MemUsed:Test2 开始
时为 5568kb MemUsed:结束时为 6404kb
我无法弄清楚输出。我希望在delete调用之后,使用的内存量应该恢复到以前的值。使用的内存量与操作员的调用号new和delete.