El modelo de memoria de Windows
La memoria de Windows está virtualizada. Las aplicaciones no tienen acceso directo a las direcciones de memoria, por lo que permite a Windows mover memoria física y intercambiar memoria dentro y fuera de un archivo swapper (denominado pagefile.sys).
La asignación de memoria es normalmente un proceso de dos fases. La simple asignación de memoria hace que una aplicación obtenga un descriptor de contexto. No se reserva nada de memoria física. Existen más descriptores de contexto que memoria física. Para utilizar la memoria, ésta debe "confirmarse". En esta fase, un descriptor de contexto hace referencia a la memoria física. Ésta podría no ser toda la memoria que ha solicitado.
Por ejemplo, la pila asignada a una hebra recibe normalmente una pequeña cantidad de memoria real. Si la pila se desborda, se emite una excepción y el sistema operativo asigna más memoria física para que la pila pueda crecer.
La manipulación de memoria por parte de los programadores de Windows está oculta dentro de las bibliotecas proporcionadas para el entorno de programación elegido. En el entorno C, las rutinas de manipulación de memoria básicas son las conocidas funciones Malloc y Free. Las API de Windows se encuentran en la parte superior de estas bibliotecas y generalmente proporcionan un nivel adicional de abstracción.
Para un programador, Windows proporciona un modelo de memoria plana, en el que las direcciones se ejecutan desde 0 hasta el límite permitido para una aplicación. Las aplicaciones pueden elegir segmentar su memoria. En un volcado, el programador ve los diferentes conjuntos de direcciones de memoria.