En el código C / C ++ no administrado, ¿cuáles son las mejores prácticas para detectar pérdidas de memoria? ¿Y las pautas de codificación a evitar? (Como si fuera así de simple;)
En el pasado, hemos utilizado un poco tonto: tener un incremento de contador para cada llamada de asignación de memoria y decremento mientras se libera. Al final del programa, el valor del contador debe ser cero.
Sé que esta no es una buena manera y hay algunas capturas. (Por ejemplo, si está liberando memoria asignada por una llamada de API de plataforma, su recuento de asignación no coincidirá exactamente con su recuento de liberación. Por supuesto, incrementamos el contador al llamar a llamadas de API que asignaron memoria).
Espero sus experiencias, sugerencias y quizás algunas referencias a herramientas que simplifiquen esto.