Uno stack è un array o una struttura di elenchi di chiamate di funzione e parametri utilizzati nella moderna programmazione informatica e architettura della CPU. Simile a una pila di piatti in un ristorante a buffet o in una caffetteria, gli elementi in una pila vengono aggiunti o rimossi dalla parte superiore della pila, in un ordine "ultimo in primo, primo in uscita" o LIFO.
Il processo di aggiunta di dati a uno stack viene definito "push", mentre il recupero dei dati da uno stack viene chiamato "pop". Ciò si verifica nella parte superiore dello stack. Un puntatore di pila indica l'estensione della pila, regolandosi quando gli elementi vengono spinti o spuntati in una pila.
Quando viene chiamata una funzione, l'indirizzo dell'istruzione successiva viene inserito nello stack.
Quando la funzione termina, l'indirizzo viene espulso dallo stack e l'esecuzione continua a quell'indirizzo.
Esistono altre azioni che possono essere eseguite su uno stack a seconda dell'ambiente di programmazione.
Lo stack è anche noto come "Last In First Out (LIFO) ".
Esempi: in C e C ++, le variabili dichiarate localmente (o auto) sono memorizzate nello stack.