Leo en los estándares de codificación de Google C++ que Google no usa la excepción. Si no se utiliza la excepción, ¿cómo libera la memoria cuando ocurren errores en su programa?¿Un programa C++ libera automáticamente la memoria cuando se bloquea?
Por ejemplo, f() llama a g(), y si hay un error en g(), debería liberar toda la memoria asignada en g(), y luego llamar a una excepción a f(). Una vez que f() capte la excepción, f() liberará toda la memoria asignada en f() y saldrá del programa.
Si no se utiliza la excepción, y si hay un error en g(), ¿puedo forzar la salida exit(0)
, y el programa C++ será lo suficientemente inteligente como para liberar toda la memoria asignada? Supongo que, dado que C++ mantiene una pila y un montón, y una vez que el programa sale, ¿C++ liberará automáticamente la pila y el montón?
Es el sistema operativo que recupera la memoria, por lo general. –
bien si todo el proceso falla, entonces sí, la memoria es liberada por el sistema operativo. no importa en qué idioma se haya escrito el programa. – clamp
Podría decirse que es un poco fraudulento afirmar que algo es C++ si prohíbe las excepciones. Es como ofrecerle un automóvil a su conductor, pero solo si no usa combustible. –