Orden de destrucción de variables locales de C++

Orden de destrucción de variables locales de C++

Dentro de cada categoría de clases de almacenamiento (excepto los objetos asignados dinámicamente), los objetos se destruyen en el orden inverso al de construcción.


Yo. Acerca de las variables locales

  1. Las variables locales se asignan en la pila .

  2. La pila se basa en un LIFO (Last-In-First-Out ) patrón.

  3. Por lo tanto, las variables se destruyen y desasignan en el orden inverso al de asignación y construcción.

II. Acerca de tu ejemplo

Tu función main() se llama:

  • x1 se asigna y construye en la pila ,
  • x2 se asigna y construye en la pila

y cuando termine el main() se alcanza el alcance de la función:

  • x2 se destruye y desasigna de la pila ,
  • x1 se destruye y desasigna de la pila

III. Además

La pila luce así:

(Comportamiento de la pila parece más comprensible con un esquema)


Este es un Stack Data Structure comportamiento, por lo que las variables locales se almacenan en Stack como LIFO (Last-In-First-Out) estructura de datos, puede imaginar que en una estructura de datos LIFO, la última variable agregada a la estructura debe ser la primera en eliminarse. las variables son removed de la pila en el reverse order al orden de su adición.