Weaknesses of type CWE-762
12 resultsRotinas de Gestão de Memória Incompatíveis
Ocorre quando código aloca memória com uma função (ex: malloc) mas libera com outra incompatível (ex: delete do C++). O sistema operacional ou runtime não consegue rastrear corretamente o bloco, causando corrupção de heap, vazamentos ou crashes. É perigoso porque introduz comportamento indefinido e pode ser explorado para execução de código.
Um componente aloca buffer com malloc() em C, mas outra parte do código (ou biblioteca C++) tenta liberar com delete. O alocador não reconhece o bloco, escreve em estruturas internas erradas, e o programa quebra ou vaza memória sistematicamente.
Use sempre o mesmo par alocador/liberador dentro do mesmo contexto (malloc/free, new/delete, etc). Em código C++, prefira std::unique_ptr ou std::shared_ptr. Code review rigoroso em operações de memória e use ferramentas como Valgrind ou AddressSanitizer para detectar mismatches antes da produção.