0Pricing
C++ Academy · Lección

Asignación en la pila

Descubra cómo funciona el almacenamiento automático

Asignación en la pila es una lección gratuita de C++ Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C++ Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C++ Academy incluye 4 lecciones en total.

Almacenamiento automático

Las variables locales viven en el almacenamiento automático, comúnmente llamado pila. Se crean cuando la ejecución entra en su ámbito y se destruyen cuando sale de él.

#include <iostream>

int main() {
    int x = 42;          // on the stack
    double pi = 3.14;    // on the stack
    std::cout << x << " " << pi << "\n";
}

La pila crece y se reduce

Cada llamada a una función inserta un marco de pila que contiene sus variables locales. Cuando la función devuelve el control, el marco se extrae y las variables locales desaparecen; no se necesita ninguna limpieza manual.

#include <iostream>

void greet() {
    int local = 7;          // pushed on call
    std::cout << local << "\n";
}                            // popped on return

int main() { greet(); }

Orden LIFO

La pila sigue el orden último en entrar, primero en salir. La variable local creada más recientemente es la primera que se destruye cuando termina el ámbito.

#include <iostream>

int main() {
    int a = 1;
    {
        int b = 2;   // created after a
        std::cout << b << "\n";
    }                // b destroyed first
    std::cout << a << "\n";
}

Rápido y económico

La asignación en la pila es extremadamente rápida: solo mueve el puntero de la pila. No hay que buscar memoria libre ni llevar un registro como requiere el montón.

El ámbito determina el tiempo de vida

Un objeto de la pila solo está activo dentro del bloque en el que se declara. Los bloques anidados tienen su propio ámbito.

#include <iostream>

int main() {
    for (int i = 0; i < 3; ++i) {
        int square = i * i;   // recreated each iteration
        std::cout << square << "\n";
    }
}

Tamaño limitado

La pila tiene un tamaño fijo y limitado (a menudo de unos pocos megabytes). Asignar matrices enormes en la pila puede provocar un error de desbordamiento de pila.

// Risky: a large fixed array on the stack
int big[1000000];   // may overflow the stack

Devolver una dirección de la pila es un error

No devuelva nunca un puntero o una referencia a una variable local. Cuando la función devuelve el control, ese almacenamiento deja de existir y el puntero queda colgante.

int* bad() {
    int local = 5;
    return &local;   // BUG: local dies here
}

Pasar objetos grandes por referencia

Copiar objetos grandes en la pila es ineficiente. Páselos mediante const& para evitar la copia y mantener reducido el uso de la pila.

#include <string>

void print(const std::string& s) {  // no copy
    // use s
}

Los objetos de la pila no necesitan delete

Como el compilador administra automáticamente su ciclo de vida, nunca debe llamar a delete sobre una variable de la pila.

#include <iostream>

int main() {
    int n = 10;
    // delete &n;   // ERROR: not heap-allocated
    std::cout << n << "\n";
}

Matrices en la pila

Las matrices de tamaño fijo y longitud conocida se almacenan en la pila y se liberan automáticamente cuando termina el ámbito.

#include <iostream>

int main() {
    int values[3] = {10, 20, 30};
    for (int v : values) std::cout << v << "\n";
}

Cuándo preferir la pila

Prefiera la pila para objetos pequeños y de corta duración cuyo tamaño se conozca en tiempo de compilación. Es más rápida y se limpia automáticamente; recurra al montón solo cuando realmente lo necesite.

Comprobación rápida

Compruebe su comprensión de la asignación en la pila.

Resumen

Ha aprendido que la asignación en la pila utiliza almacenamiento automático ligado al ámbito: las variables se crean al entrar y se destruyen al salir, en orden LIFO. Es rápida, se limpia automáticamente y tiene un tamaño limitado. Nunca devuelva direcciones de variables locales ni use delete con objetos de la pila.

Preguntas frecuentes

¿La lección «Asignación en la pila» es gratis?

Sí — el texto completo de «Asignación en la pila» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C++ Academy, actualiza a CoddyKit PRO. El curso de C++ Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Asignación en la pila»?

Descubra cómo funciona el almacenamiento automático Practicas C++ Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar C++ Academy?

No se requiere experiencia previa. C++ Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Asignación en la pila»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de C++ Academy?

Sí. Cada lección de C++ Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Asignación en la pila
  2. Asignación en el heap con new/delete
  3. Tiempo de vida de los objetos
  4. Errores habituales de memoria
← Volver a C++ Academy