Ich bin Schnittstelle C-Programm (main()
ist in C) mit C++. An einigen Stellen in meinem Code möchte ich die Ausführung des Programms stoppen. Jetzt würde ich gerne wissen, wie kann ich das sauber machen?So beenden Sie ein Programm mit gemischten C/C++ sauber
Im Moment rufe ich std::terminate()
an, aber mehr aus Mangel an besseren Ideen. Die Hauptsache, die mich nervt, ist nicht einmal, dass ich den Speicher nicht freigebe (weil es beim Beenden des Programms sowieso freigegeben wird, richtig?), Aber dass der MSVS-Just-in-Time-Debugger erscheint und ich eine hässliche Fehlermeldung bekomme Beenden der Laufzeit auf ungewöhnliche Weise.
EDIT: Da dies zu Verwirrung geführt hat: Rückkehr von main()
mit return 0
ist in diesem Fall nicht möglich.
Was ist los mit 'exit (0)'? –
AFAIK std :: terminate wird verwendet, um eine ungewöhnliche Beendigung anzuzeigen (z. B. wenn eine nicht abgefangene Ausnahme die oberste Ebene erreicht). Dies könnte den Debugger auslösen. – wintermute
Der saubere Weg wäre, den Kontrollfluss korrekt zu handhaben und auf eine standardmäßige Weise zu beenden (Griffe, Objekte, Verbindungsfäden usw. loslassen). 'exit (0)' ist eine hässliche Alternative – Bruce