Executando verificação de segurança...
3

Como fazer depuração de vazamento de memoria?

Embora a linguagem tenha coleta de lixo (garbage collection) para gerenciar a memória automaticamente. O garbage collector (GC) limpa objetos que não estão mais em uso, mas há situações onde os desenvolvedores podem criar condições que causam vazamento de memória.E de lembrar que nem toda a linguagem tem o garbage collector (GC).

Apresento-vos o Valgrind

é uma ferramenta de depuração que ajuda a detectar erros de memória.

O Valgrind é utilizado na linha de comando. Para instalá-lo em distribuições Linux, basta usar o gerenciador de pacotes. Por exemplo:

sudo apt-get install valgrind # Debian/Ubuntu

Executando um programa com Valgrind:

Para rodar um programa com Valgrind e detectar vazamentos de memória, o comando básico é:

valgrind --leak-check=full ./example

Interpretação da saída:
Valgrind gera um relatório detalhado com a quantidade de memória alocada, liberada, e vazada, além de fornecer o local no código onde os problemas ocorrem. Exemplo de uma saída simplificada:

  • ==12345== HEAP SUMMARY:
  • ==12345== in use at exit: 8 bytes in 1 blocks
  • ==12345== total heap usage: 5 allocs, 4 frees, 72 bytes allocated
  • ==12345==
  • ==12345== 8 bytes in 1 blocks are definitely lost in loss record 1 of 1
  • ==12345== at 0x4C2BBAF: malloc (vg_replace_malloc.c:299)
  • ==12345== by 0x4005ED: main (example.c:6)

Esse exemplo indica que 8 bytes de memória foram perdidos, e aponta para a linha no código onde a memória foi alocada (example.c:6).

Carregando publicação patrocinada...
1

Muito interessante essa ferramenta, principalmente pra quem é desenvolvedor low code. C e C++ é muito fácil ter memory leak. Vejo uma otima opção o Rust (acho que já saturou recomendar Rust invés de C e C++ kkkkkk).

1
0