ExpertiDict

C · Intermediário · Português · Técnico

vazamento de memória

/va.zaˈmẽ.tu dʒi meˈmɔ.ɾjɐ/substantivo

Situação em que um bloco alocado no heap perde todos os ponteiros que o alcançam sem ter sido liberado. A memória fica ocupada até o fim do processo.

Onde usar

Programas de longa duração, como servidores, crescem de tamanho até serem mortos pelo sistema. Ferramentas como valgrind e AddressSanitizer apontam onde o bloco foi alocado.

Em código

for (int i = 0; i < 3; i++) {
  char *s = malloc(100);
  // falta free(s): vaza 100 bytes por volta
}

Exemplos

O valgrind achou um vazamento de memória na função de leitura.

O serviço cresce uns 50 MB por hora por causa de um vazamento de memória.

Cuidado

Sobrescrever o único ponteiro de um bloco, como p = malloc(...) dentro de um laço sem free, é a causa mais comum.

Sinônimos

memory leak

Veja também

Todos os termos de C