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.
Na linguagem C, existem dois principais casos em que variáveis são armazenadas na memória estática:
static: podem estar dentro de funções, mas possuem comportamento especialConsidere 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:
global é armazenada na memória estática por ser globalvitor, embora declarada dentro de uma função, também é armazenada na memória estática por utilizar a palavra-chave staticA 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.
staticUma 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.