C · Essencial · Português · Técnico
variável não inicializada
Variável local declarada sem valor inicial, cujo conteúdo é indeterminado: lixo que estava na pilha. Globais e static começam zeradas; locais não.
Onde usar
Gera aquele bug que muda de comportamento conforme a otimização ou a máquina. O Valgrind e o aviso do -Wall com -O2 ajudam a achar leituras de valor indeterminado.
Em código
int g; // global: começa em 0
int main(void) {
int x; // local: valor indeterminado
int y = 0;
return g + y; // x não é lido
}Exemplos
O bug só aparecia em release porque uma variável local ficou sem inicializar.
Inicialize na declaração: o lixo da pilha não é zero.
Cuidado
Supor que o lixo é zero porque nos testes deu zero; só variáveis globais e static têm inicialização garantida.
Sinônimos
lixo de memória
Antônimos
variável inicializada