No código C / C ++ não gerenciado, quais são as práticas recomendadas para detectar vazamentos de memória? E diretrizes de codificação para evitar? (Como se fosse assim tão simples;)
Usamos um pouco de maneira boba no passado: ter um incremento no contador para cada chamada de alocação de memória e decremento durante a liberação. No final do programa, o valor do contador deve ser zero.
Eu sei que essa não é uma ótima maneira e existem algumas capturas. (Por exemplo, se você estiver liberando memória que foi alocada por uma chamada de API da plataforma, sua contagem de alocação não corresponderá exatamente à sua contagem de liberação. Obviamente, incrementamos o contador ao chamar as chamadas de API que alocam memória).
Espero suas experiências, sugestões e talvez algumas referências a ferramentas que simplificam isso.