mayor parte de mi conocimiento no está en Windows específico, por lo tenga paciencia conmigo:
El montón y la pila se refieren a diferentes áreas en la memoria (pero todavía estamos hablando de la memoria principal en cada caso). Esto no es particular a ningún idioma. El montón vive en las direcciones de memoria baja y crece hacia arriba; la pila vive en las direcciones de memoria alta y crece hacia abajo. Esto es para evitar que se superpongan (lo cual sería muy malo).
En una arquitectura de 32 bits, los registros EBP y ESP hacen un seguimiento del marco de pila actual. EBP es el puntero base: esto apunta a la dirección alta del marco de pila actual. ESP es el puntero de pila y apunta a la dirección baja del marco de pila actual.
Recuerde que el concepto de memoria de apilamiento y pila gratuita/asignada es principalmente relevante a nivel de aplicación. A nivel de la máquina, toda la memoria tiene el mismo aspecto: le corresponde al programador (o compilador) hacer un seguimiento de qué segmentos de memoria están en uso.
La pila se gestiona mediante una combinación de: instrucciones que llaman a funciones y modificaciones explícitas a EBP y ESP. Cualquier cosa por debajo de ESP se considera liberada; así que para liberar memoria, solo puede agregar ESP.
El montón se gestiona mediante métodos de asignación de memoria; la documentación se puede encontrar here. No estoy seguro de los detalles de Winows, pero en general habrá algún administrador de memoria que tenga la responsabilidad de asegurarse de que no se asigna ningún bloque de memoria a más de una aplicación.
Gracias por la información, pero plantea más preguntas xD!¿Cómo sabe Windows dónde ubicar el montón y la pila en la RAM sin procesar para que no se solape o entre en conflicto con otros procesos? ¿Especialmente si cambia dinámicamente de tamaño? – Daniel
@Daniel: otros procesos, un sistema operativo usa memoria virtual. Cada proceso ve su propia vista de la memoria (el espacio de direcciones virtuales). Y sí, el procesador tiene un mecanismo para convertir una dirección virtual a una dirección física. Ver http://en.wikipedia.org/wiki/Virtual_memory – Bahbar