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?

Aktualisieren:Personen, die sich dafür interessieren, was mit benutzerdefinierten Beendigungshandlern getan werden kann, finden diesen nicht portablen Trick möglicherweise hilfreich.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage