Gtkmm - vor Gtk::Main::run() beenden
-
Hallo.
Meine Frage ist einfach und kurz, jedoch finde ich keine Methode etc. dazu:
Ich möchte meiner gtkmm-Anwendung sagen, dass sie sich beenden soll, noch bevor Gtk::Main::run() erreicht wurde.
Gibt es dazu eine Methode oder ähnliches? std::abort() möchte ich wenn möglich nicht einsetzen.
-
So?
#include <cstdlib> #include <gtkmm.h> int main(int argc, char **argv) { Gtk::Main m(argc, argv); std::exit(1); Gtk::Window w; m.run(w); return 0; }
-
Manchmal ist die Lösung so einfach, dass man sie einfach nicht findet -.-
Trotzdem danke.
-
exit ist böse in C++
-
böse schrieb:
exit ist böse in C++
Bei diesem Fall kann man imo die potentiellen Probleme nicht abgebauter Objektinstanzen usw. getrost beiseite schieben. Zur Not bleibt auch noch atexit.
-
Warum nicht einfach return?
-
hä? schrieb:
Warum nicht einfach return?
Weil ich das vielleicht auch in einer Funktion *ausserhalb* von main() einbauen will?
Zu den anderen:
Smart-Pointer beheben dieses Problem, oder irre ich mich da?
-
The-Kenny schrieb:
hä? schrieb:
Warum nicht einfach return?
Weil ich das vielleicht auch in einer Funktion *ausserhalb* von main() einbauen will?
Zu den anderen:
Smart-Pointer beheben dieses Problem, oder irre ich mich da?Na ja, bei meinem obigen Code wird z.B. die 'm'-Instanz nicht abgebaut.
Ebenso würden Smart-Pointer den allokierten Speicherplatz auch nicht freigeben können. D.h. man muss schon aufpassen, wie und wo man exit in C++ einsetzt. Mit etwas Umsicht ist die Geschichte aber nicht so wild.EDIT: Der Speicher wird nach Beendigung (oder Absturz
) des Programms eh vom Betriebssystem wieder freigegeben (also sowohl Stack als auch Heap-Objekte werden aus dem Speicher entfernt).