Weaknesses of type CWE-1091
1 resultUso de objeto sem invocar seu destrutor
Ocorre quando um objeto é descartado ou sai de escopo sem que seu método destrutor seja chamado, deixando recursos (memória, conexões, arquivos) não liberados. Isso é comum em linguagens com gerenciamento manual de ciclo de vida ou quando há tratamento inadequado de exceções que pula a execução do destrutor.
Uma classe abre uma conexão com banco de dados no construtor. Se o objeto é deletado manualmente com 'delete' sem antes chamar um método de limpeza, ou se uma exceção é lançada durante o uso da conexão, o destrutor nunca executa e a conexão fica aberta indefinidamente.
Use padrões como RAII (Resource Acquisition Is Initialization) ou smart pointers em C++, garantindo que o destrutor sempre execute. Em outras linguagens, use try-finally ou context managers (Python) para garantir limpeza de recursos mesmo em cenários de erro.