A execução de um programa em linguagem C é fortemente baseada no uso de funções. Cada vez que uma função é chamada, a stack é utilizada para armazenar as informações necessárias para sua execução.

Esse mecanismo é responsável por garantir que múltiplas funções possam ser executadas de forma organizada e previsível.

3.1 Empilhamento de Chamadas

Considere o seguinte exemplo:

#include <stdio.h>

void funcao(int n, int* v){
  int local;
  printf("Executando funcao...\n");

  v[0] = n;
}

int main() {
  int numero;
  int vetorzitcho[3] = {0};

  scanf("%d", &numero);

  funcao(numero, vetorzitcho);

  return 0;
}

Durante a execução desse programa, ocorre a seguinte sequência:

  1. A função main inicia sua execução e sua stack é criada
  2. As variáveis numero e vetorzitcho são armazenadas na stack de main
  3. A função funcao é chamada
  4. Uma nova região é adicionada à stack para funcao
  5. Os parâmetros n e v, bem como a variável local, são armazenados nessa nova região
  6. Ao término de funcao, sua região de memória é removida
  7. A execução retorna para main

image.png


3.2 Isolamento entre Funções

Cada função possui sua própria região de memória na stack. Isso garante que:

Esse isolamento é essencial para a organização e modularização de programas.