CodeGuard Fehlermeldung Access Overrun



  • Hallo Community,

    ich bekomme eine Fehlermeldung im CodeGuard und weiß nicht, wie ich mein Programm abändern muß, damit mehr Speicher oder ein anderer Block reserviert werden kann.
    Wie ich das sehe, versucht Borland beim Erzeugen meines LoginFormulars mit new für das Eingabefeld Speicher zu reservieren und der Block ist wohl irgendwie zu klein. Aber wie soll ich diesen Fehler beheben?

    Hat jemand vielleicht einen Tip wo ich ansetzen soll?

    Access overrun
        Attempt to access 85 byte(s) at 0x01019034, that is at heap block 0x01019034    which is only 84 bytes long.
        cc3260mt.strcmp
            CBenutzerDaten::checkLogin(char*,char*)
            TFormGrundbild::SBLoginClick(const System:TObject *)
            0x004E5974
            WinMain(void*,void*,char*,int)
        The object(0x01019034)[size: 84 bytes] was created with new
            _STCON0_()
            0x00443D54
            0x3267D929
            0x3267DAFF
    


  • Hallo

    Die Ursache liegt in der Funktion checkLogin, und wenn ich die Parameterliste sehe mit den C-Strings vermute ich das du nicht genug Speicher für einen C-String anlegst.
    verwende am besten gleich imer AnsiString.

    bis bald
    akari



  • Das anlegen der C-Strings war das Problem. Ich hatte den String nicht initialisiert. Dadurch stand beim ersten Aufruf ohne das eine Eingabe erfolgte irgend etwas drin und dieser String war länger als meine 40 Zeichen.

    class CBenutzer
            {
             private:                            // Private Bereich
             char benutzer[40];                  // Benutzer
             char passwort[40];                  // Passwort
             int level;                          // Level
    
             public:                             // Public Bereich
             CBenutzer();                        // Konstruktor
             ~CBenutzer();                       // Destruktor
    

    Habe nun den Konsturktor abgeändert und gleich mit leeren Strings initialisiert, dann ist dieser Fehler weg.

    Danke für den Tip.
    Habe nun aber ein neues Problem, mache aber einen neuen Threat auf.

    Grüße
    egcactus


Anmelden zum Antworten