Existen tres formas principales de hacerlo.
El primero es que no crea pérdidas de memoria en primer lugar. Las técnicas de programación defensiva son invaluables aquí. Consulte este excellent presentation para obtener un resumen de estos problemas, o el capítulo correspondiente en Secure C Coding. Estoy más familiarizado con C que con C++, pero entiendo que los C++ smart pointers son útiles aquí.
Un segundo enfoque análisis estático, que intenta detectar errores en su código fuente. La herramienta original en esta categoría es pelusa, que ahora está tristemente desactualizada. Las mejores herramientas, hasta donde yo sé, son comerciales, como coverty. Sin embargo, algunos free tools do exist.
El tercer enfoque es detectar fugas de memoria en tiempo de ejecución, como INSURE ++. Valgrind es excelente aquí y muy recomendable. Puede ayudar a detectar errores que ya ha introducido. Es especialmente útil si tiene un conjunto de pruebas que tenga una buena cobertura de código.
¿Estás usando C o C++? Las soluciones disponibles son bastante diferentes para los dos idiomas. –
Estoy usando C. ¿Pueden proporcionar una resolución para C y C++? – Ankur
@Ankur: Bueno, una respuesta que tiene sentido para C no va a tener sentido para C++ y viceversa. La administración de la memoria es uno de los bits que cambian en C++. –