A memória estática é uma região utilizada para armazenar variáveis que permanecem alocadas durante toda a execução do programa.

Diferentemente das variáveis locais (armazenadas na stack), que são criadas e destruídas conforme o fluxo de execução das funções, as variáveis estáticas possuem tempo de vida prolongado, sendo criadas no início do programa e liberadas apenas ao seu término.

1.1 Tipos de Variáveis na Memória Estática

Na linguagem C, existem dois principais casos em que variáveis são armazenadas na memória estática:

Considere o exemplo:

#include <stdio.h>

int global;

void funcao2(){
  static int vitor[2];

  printf("Executando funcao2...\n");
}

int main() {
  int xpto = 10;
  return 0;
}

Nesse código:

1.2 Características da Memória Estática

A memória estática apresenta as seguintes características:

Essas características tornam a memória estática adequada para situações em que é necessário manter dados persistentes ao longo do programa.

1.3 Comportamento de Variáveis static

Uma característica importante das variáveis declaradas com static é que, mesmo estando dentro de uma função, elas não são destruídas ao final da execução da função.