Red de conocimientos sobre prescripción popular - Remedios caseros - ¿Las variables de la función principal del lenguaje C y las variables de otras funciones utilizan una pila?

¿Las variables de la función principal del lenguaje C y las variables de otras funciones utilizan una pila?

Una pila, pero no necesariamente un montón. Cada vez que se ejecuta el programa, se asigna una pila y la función principal está en la parte inferior de la pila. Luego, a través de la secuencia de llamada de diferentes funciones, se ingresa y sale de la pila en secuencia. El montón es un espacio asignado dinámicamente por el programa, y ​​el espacio asignado cada vez no es necesariamente continuo.

1) Crear en la pila. Cuando se ejecuta una función, las unidades de almacenamiento para las variables locales de la función se crean en la pila y estas unidades de almacenamiento se liberan automáticamente cuando se ejecuta la función. La operación de asignación de memoria de la pila está integrada en el conjunto de instrucciones del procesador y generalmente se accede a ella mediante registros. Es eficiente, pero la capacidad de memoria asignada es limitada.

2) Asignar desde el montón, también llamado asignación de memoria dinámica. Cuando el programa se esté ejecutando, use malloc o new para solicitar cualquier cantidad de memoria. El programador es responsable de cuándo usar free o eliminar para liberar la memoria. La vida útil de la memoria dinámica la determina el programador, por lo que su uso es muy flexible.

Los compiladores generalmente utilizan pilas para almacenar parámetros de funciones, variables locales, etc. Implementar llamadas a funciones. A veces las funciones tienen llamadas anidadas. En este momento, habrá información sobre múltiples funciones en la pila y cada función ocupará un área continua. El área ocupada por una función se llama marco (). Al mismo tiempo, la pila es independiente del subproceso y cada subproceso tiene su propia pila. Un subproceso tiene solo una pila y todas las funciones ejecutadas en este subproceso utilizarán esta pila. Cuando se llama a una función, se abrirá una porción de espacio en la parte superior de la pila (esencialmente simplemente moviendo la parte superior de la pila hacia arriba) para guardar sus propios datos, que incluyen los parámetros de la función, la dirección de retorno y las variables locales. Cuando la función regresa, siempre que la parte superior de la pila regrese al estado antes de ser llamada, se liberará el espacio que ocupaba.

Por ejemplo, la siguiente llamada de función simple: