Problem von Memoryfreigabe mit exit(0)
-
Hallo, Leute,
Wenn ich im Constructor der Main-Klasse meines Programms exit(0) aufrufe, bekomme ich immer folgende Meldung: "Zugriffsverletzung bei Adresse 0058AE6C in Modul ‚project.exe’" und springt das Programm unter Debug-Mode zu
/* TCustomForm.Destroy */ inline __fastcall virtual ~TForm(void) { }
in Forms.hpp. Es scheint, dass ein TForm kann nicht freigegeben wird.//--------------------------------------------------------------------------- __fastcall TF_Main::TF_Main(TComponent* Owner) : TForm(Owner) { _version = "1.9"; Application->CreateForm(__classid(TF_Splash),&F_Splash); F_Splash->Show(); //Formular für Startbild F_Splash->L_Status->Caption = "initialising main form ..."; F_Splash->Update(); //parameters initialisation ... ... if (deaktiviert) exit(0); ... ... if (F_Splash!=NULL) { delete F_Splash; F_Splash=NULL; } }Ich weiß nicht, ob es etwas mit dem selbst initialisierte Form "TF_Splash" zu tun hat, ich habe auch so wie folgendes versucht, aber ich bekomme die gleiche Meldung.
if (deaktiviert) { if (F_Splash!=NULL) { delete F_Splash; F_Splash=NULL; } exit(0); }Ich habe keine Ahnung, aus welcher TForm das Problem von Memoryfreigabe kommt. Kann jemand mir Idee geben?
Danke im Voraus
-
Ich kann dir nur eins sagen: Benutze die Funktion exit nicht und beende dein Programm vernünftig.
-
ich will auch das Programm vernünftig beenden, aber wie?
z.B. Close() geht nicht während der Initialisierung der Klasse.
-
Mit Hilfe von BCB-Hilfe habe ich Application->Terminate() gefunden, der viel besser als exit(0) funktioniert.
-
Du kannst im Konstruktor auch ein PostMessage(WM_CLOSE,...) absetzen.
Das funktioniert auch.Mfg
Rainer