Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

18.12.2009, 22:19

Run-Time Check Failure#2

hi leute
ich hab ein programm mit der irrlicht engine geschrieben, alles funktioniert perfekt bis ich das programm schließe. dann kommt ein ´Debug Error´: ´Run-Time Check Failure#2 - Stack around the variable `CTheNev` was corrupted.´

wenn ich auf einen der buttens klicke schließt sich alles, was ich ja auch wollte. trotzdem ist meine frage: was will mir das sagen und wie krieg ich das wieder weg?

danke schonmal im Voraus
LG Schwane

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

18.12.2009, 23:40

Ohne Code schwer zu sagen, aber ich würde mal drauf tippen, dass du den üblichen Fehler gemacht hast und in einer Klasse einen Zeiger hälst und dann ein Objekt davon kopierst und da du im Destruktor den Bereich wieder freigibst, geschieht das 2x und das erzeugt so einen Fehler.

3

19.12.2009, 01:10

danke erstmal,
ich kann es zwar jetzt nicht mehr genau überprüfen und ich bin samstag/sonntag weg, also werd ich erst am Montag weiter proggen.
Aber wenn ich den Quellcode überfliege dann denk ich schon das du Recht hast.

LG Schwane

Helmut

5x Contest-Sieger

Beiträge: 692

Wohnort: Bielefeld

  • Private Nachricht senden

4

19.12.2009, 09:47

Ne, der von drakon beschriebene Fehler passt hier nicht. Entweder ist CTheNev ein Array (oder ein Typ mit einem Array als Member) und du greifst außerhalb des Bereichs darauf zu, oder eine Variable, die direkt davor oder danach definiert ist, ist ein Array. Es kann auch sein, dass du CTheNev falsch castest, aber ein Arrayoverflow oder -underflow ist laut Kristallkugel wahrscheinlicher.

Sowas sollte man übrigens schon fixen, da sonst leicht im Releasemodus undefiniertes Verhalten auftritt.

Ciao
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender)

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

5

19.12.2009, 11:16

Stimmt. Die Fehlermeldung passt eigentlich besser auf deinen vermuteten Fehler. Ich habe das vor allem wegen dem gedacht, weil der Fehler auftritt, wenn das Programm beendet wird. Da passiet überlicherweise mein genannter Fehler.

6

21.12.2009, 22:36

danke ihr beiden. Helmut hatte recht und der Bug ist gefix ;)

dafür habe ich aber ein neues Problem: entweder hat mein Compiler ne Meise, oder ich bin blind.

hier ist der code einer Funktion...

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
bool Map::loadData(char* a_cFieleName)
{
    FILE* pFile; // ein Pointer auf die Datei
    
    // Datei öffnen
    pFile = fopen(a_cFieleName, "rb");
    
    // überprüfen ob die Datei gefunden wurde
    if(pFile)
    {   
        // wenn ja lesen und in der Struktur speichern
        fread( SData&, sizeof(MapData), 1, pFile);

        // datei schließen
        fclose(pFile);
        
        return true;
    }
    else
    {
        return false;
    }
}


... und in der Zeile mit fread, zeigt der Compiler nen "Synaxfehler ´,´".
Also wie gesagt: entweder der Compiler spinnt, oder ich bin blind.

bitte wieder um schnelle hilfe.
LG Schwane

7

22.12.2009, 00:31

Was ist SData& ?

8

22.12.2009, 09:23

Ja ich würde probieren, den Adressoperator (&) vor die Variable und nicht dahinter zu schreiben.
Lieber dumm fragen, als dumm bleiben!

9

22.12.2009, 14:00

:oops: ja, jetzt funktionirts Danke... Gestern war es halt schon spät ;)

Werbeanzeige