C · Intermediário · Português · Técnico
vazamento de memória
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