Wann ist ein C ++ - Terminate-Handler das Richtige?
Der C ++ - Standard bietet diestd::set_terminate
Funktion, mit der Sie angeben können, welche Funktion verwendet werden sollstd::terminate
sollte eigentlich anrufen.std::terminate
sollte nur unter schlimmen Umständen aufgerufen werden, und sicher sind die Situationen, für die der Standard beim Aufrufen beschreibt, schlimm (z. B. eine nicht abgefangene Ausnahme). Wannstd::terminate
Die Situation scheint so, als wäre das Gedächtnis aufgebraucht - es gibt nicht wirklich viel, was man vernünftigerweise tun kann.
Ich habe gelesen, dass damit sichergestellt werden kann, dass Ressourcen freigegeben werden. Bei den meisten Ressourcen sollte dies jedoch automatisch vom Betriebssystem verarbeitet werden, wenn der Prozess beendet wird (z. B. Dateihandles). Theoretisch kann ich einen Fall erkennen, bei dem Sie beispielsweise beim Beenden aufgrund eines Absturzes einem Server eine bestimmte Nachricht senden mussten. Aber die meiste Zeit sollte das OS-Handling ausreichen.
Wann ist die Verwendung eines Terminate-Handlers das Richtige?