Nel codice C / C ++ non gestito, quali sono le migliori pratiche per rilevare perdite di memoria? E le linee guida per la codifica da evitare? (Come se fosse così semplice;)
Abbiamo usato un po 'un modo stupido in passato: avere un incremento del contatore per ogni chiamata e decremento dell'allocazione di memoria durante la liberazione. Alla fine del programma, il valore del contatore dovrebbe essere zero.
So che questo non è un ottimo modo e ci sono alcune catture. (Ad esempio, se si sta liberando la memoria allocata da una chiamata API della piattaforma, il conteggio delle allocazioni non corrisponderà esattamente al conteggio delle liberazioni. Naturalmente, abbiamo incrementato il contatore quando abbiamo chiamato le chiamate API che hanno allocato la memoria.)
Mi aspetto esperienze, suggerimenti e forse alcuni riferimenti a strumenti che lo semplificano.