Falhas do tipo CWE-762
12 resultadosRotinas de gerenciamento de memória incompatíveis
Ocorre quando código aloca memória com uma função (ex: malloc) mas a libera com outra incompatível (ex: delete em C++). O alocador e o desalocador usam estratégias diferentes, causando corrupção de heap, vazamento de memória ou crash. É perigoso porque o comportamento é imprevisível e difícil de detectar em runtime.
Um desenvolvedor aloca um buffer com malloc() em C, mas tenta liberar com free() de uma biblioteca diferente que usa seu próprio gerenciador de pools. Ou aloca com new em C++ mas libera com free(). A memória não é realmente liberada e o heap fica corrompido.
Use consistentemente o mesmo par alocador/desalocador em toda a base de código (malloc/free ou new/delete). Em C++, prefira smart pointers (unique_ptr, shared_ptr) que gerenciam tudo automaticamente. Realize code review focado em padrões de alocação e use ferramentas como Valgrind ou AddressSanitizer para detectar descasamentos.