De http://www.learncpp.com/cpp-tutorial/79-the-stack-and-the-heap/¿Cómo se accede a las variables locales de función desde la pila?
Aquí es la secuencia de pasos que tiene lugar cuando una función es llamada :
- La dirección de la instrucción más allá de la llamada a la función se inserta en la pila. Así es como la CPU recuerda a dónde ir después de que la función regrese.
- La sala se crea en la pila para el tipo de devolución de la función. Esto es solo un marcador de posición por ahora.
- La CPU salta al código de la función.
- La parte superior actual de la pila se mantiene en un puntero especial llamado marco de pila.
- Todo lo agregado a la pila después de este punto se considera "local" para la función.
- Todos los argumentos de funciones se colocan en la pila.
- Las instrucciones dentro de la función comienzan a ejecutarse.
- Las variables locales se insertan en la pila tal como están definidas.
No estoy seguro de cómo funciona el punto # 6. Si todos los argumentos de funciones se colocan en la pila, ¿cómo se accede?
Si, por ejemplo, hay tres argumentos a
, y b
c
y se colocan en la pila como este de arriba
| a |
| b |
| c |
| |
...
|___|
Ahora lo que sucede cuando la función quiere acceder c
? ¿Se salieron a
y b
?
me parece imposible que el paso 3 pase antes de las 6: debe haber * dentro * el código de función del cuerpo sobre la evaluación de la persona que llama. ¡Disparates! – CapelliC