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(); // DestruktorHabe 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