Por desgracia, no puedo hablar por el mundo de Windows, pero sé que hay algunas herramientas en el mundo Unix que hace esto para usted (en tiempo de ejecución)
La idea es implementar las funciones de asignación de memoria, junto con algunos controles adicionales. Se le puede decir a la biblioteca que aborte el proceso cuando se encuentre un problema y usted puede encontrar el problema mirando el rastro de la pila. libumem en solaris es un ejemplo de esto.
Estoy seguro de que debe haber cosas similares en la plataforma de Windows.
Existen otras herramientas que realizan análisis de código estático, que le ayudarán a encontrar los problemas antes de ejecutar el código. Coverity es un ejemplo, y creo que funciona también en Windows. Hemos logrado encontrar bastantes problemas potenciales con la cobertura. Desafortunadamente, no es gratis. Sin embargo, las versiones de evaluación deberían ser posibles.
La pregunta no es cómo recuperarse de tales errores, la pregunta es cómo no hacerlos en primer lugar. (Lo mismo ocurre con la configuración de punteros a 'NULL'. ¿Por qué un puntero en el alcance no se refiere a algo?) C++ viene con muchas construcciones que le impiden administrar punteros manualmente (y otros recursos). En la última década de hacer C++, casi nunca tuve que 'borrar 'nada manualmente. – sbi
@Job. Correcto, debería haber sacado la referencia. –