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


Anmelden zum Antworten