C ++ delete no libera toda la memoria (Windows)

Necesito ayuda para comprender los problemas con mi asignación de memoria y desasignación en Windows. Estoy usando el compilador VS11 (VS2012 IDE) con la última actualización en este momento (Actualización 3 RC).

El problema es que: estoy asignando dinámicamente algo de memoria para una matriz bidimensional y la desasigno inmediatamente. Aún así, antes de la asignación de memoria, mi uso de memoria de proceso es0,3 MB antes de la asignación, en la asignación se asignan 259,6 MB (se espera desde 32768 arreglos de ints de 64 bits (8 bytes)), 4106,8 MB durante la asignación, pero después de la desasignación la memoria no se reduce a la esperada 0,3 MB, pero está atascado en 12,7 MB. Dado que estoy desasignando toda la memoria de almacenamiento dinámico que he tomado, esperaba que la memoria volviera a 0,3 MB.

Este es el código en C ++ que estoy usando:

#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;
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta