¿Cómo evitar el "intercambio de muerte" durante el desarrollo?

Probablemente todos se encontraron con este problema al menos una vez durante el desarrollo:

while(/*some condition here that somehow never will be false*/)
{
    ...
    yourvector.push_back(new SomeType());
    ...
}

Cuando vea que el programa comienza a agotar toda la memoria del sistema, su programa se bloquea y su sistema comienza a intercambiarse como loco. Si no reconoce el problema lo suficientemente rápido y elimina el proceso, es probable que obtenga un sistema que no responde en segundos, donde el puntero del mouse ni siquiera se mueve. Puede esperar a que su programa se bloquee con un error de "falta de memoria" (que puede tomar varios minutos largos) o presionar el reinicio en su computadora.

Si no puede rastrear el error inmediatamente, necesitará varias pruebas y restablecimientos para descubrir cuál es muy molesto ...

Estoy buscando una forma posiblemente multiplataforma para evitar esto de alguna manera. Lo mejor sería un código de modo de depuración que salga del programa si asigna demasiada memoria, pero ¿cómo puedo hacer un seguimiento de la cantidad de memoria asignada? Anular los operadores globales nuevos y eliminar no ayudará, porque la función gratuita que invocaría en la eliminación no dará idea de cuántos bytes están liberados.

Cualquier idea apreciada.

Respuestas a la pregunta(5)

Su respuesta a la pregunta