C ++ Delete gibt nicht den gesamten Speicher frei (Windows)

Ich benötige Unterstützung beim Verständnis von Problemen bei der Speicherzuweisung und Freigabe unter Windows. Ich verwende derzeit den VS11-Compiler (VS2012 IDE) mit dem neuesten Update (Update 3 RC).

Das Problem ist: Ich reserviere dynamisch Speicher für ein zweidimensionales Array und teile die Zuordnung sofort auf. Noch vor der Speicherzuweisung ist meine Prozessspeicherauslastung0,3 MB vor der Zuweisung, bei Zuweisung 259,6 MB (erwartet, da 32768 Arrays mit 64-Bit-Ints (8 Byte) zugewiesen sind), 4106,8 MB während der Zuweisung, aber nach Aufhebung der Zuweisung fällt der Speicher nicht auf die erwarteten 0,3 MB. steckt aber bei 12,7 MB fest. Da ich die Zuordnung des gesamten von mir belegten Heapspeichers aufgehoben habe, habe ich erwartet, dass der Speicher wieder 0,3 MB beträgt.

Dies ist der Code in C ++, den ich verwende:

#include <iostream>
#define SIZE 32768
int main( int argc, char* argv[] ) {
std::getchar();

int ** p_p_dynamic2d = new int*[SIZE];

for(int i=0; i<SIZE; i++){
    p_p_dynamic2d[i] = new int[SIZE];
}   
std::getchar();

for(int i=0; i<SIZE; i++){
    for(int j=0; j<SIZE; j++){
        p_p_dynamic2d[i][j] = j+i;
    }
}

std::getchar();

for(int i=0; i<SIZE; i++) {
    delete [] p_p_dynamic2d[i];
}
delete [] p_p_dynamic2d;

std::getchar();
return 0;
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage