Esto es por lo general depende de OS, pero por lo general es así:
Todo va a RAM. El binario reside en el disco duro, pero, cuando se ejecuta, está completamente cargado, junto con las bibliotecas dependientes, en la RAM.
La pila y el montón son detalles de implementación, pero también residen en la RAM.
Aunque está cargado en la RAM, la memoria no se puede direccionar directamente. El sistema operativo asigna memoria virtual para cada proceso. Esto significa que la dirección 0x001
no se encuentra realmente en 0x001
en la RAM, pero representa una dirección en el espacio de direcciones virtuales.
EDIT: Aclaración a uno de los comentarios de OP:
Están binarios cargados total o parcialmente en tiempo de ejecución? Y, ¿esos binarios solo se acceden una vez durante el tiempo de ejecución o se continúan leyendo desde Harddrive?
Por ejemplo, en MS, si enlaza con una biblioteca, se cargará completamente en el tiempo de ejecución, al inicio del programa. Si lo carga programáticamente, a través del LoadLibrary()
, se carga en la memoria en la llamada a la función, y puede descargarse de la memoria.
huelo tarea o preparación de la prueba :) Todo eso es OK, siempre y cuando la cuestión está etiquetado apropiadamente. – dasblinkenlight
No mezcle * lenguajes de programación * y * hardware informático *. El primero es un idioma, el último se rompe cuando lo dejas caer al suelo. Los lenguajes de programación se pueden usar para * instruir * una computadora, pero son ante todo una construcción abstracta. –
@Kerrek SB: Si pudiera decir, ¿dónde instruye C++ a la computadora para que los coloque al final? – Maiss