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

Bu1

Frischling

  • »Bu1« ist der Autor dieses Themas

Beiträge: 66

Beruf: Schüler

  • Private Nachricht senden

1

02.06.2011, 20:06

Laufzeitfehler durch Makro

Hi,

immer wenn ich diese Makro benutze

C-/C++-Quelltext

1
#define SAFE_DELETE(x)          {if((x)) {delete (x); (x) = NULL;}}

trit bei mir dieser Laufzeitfehler auf

Zitat


Debug Assertion Failed!

Programm Test.exe
File:f\dd\vctools\crt_bld\self_x86\crt\src\dbgdel.cpp
Line: 52

Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)



Hat jemadn ne Idee :?:

Bu1

Zitat

Sämtliche Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt :!:
Sie können nach belieben kopiert und weiterverwändet werden. :P

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

2

02.06.2011, 20:10

delete prüft selbst ob der Zeiger auf Null steht und meistens muss man den Zeiger nachher sowieso nicht auf Null setzen.
Verwende das Makro einfach nicht. Versuch am besten überhaupt keine zu benutzen.

Den Fehler versteh ich allerdings auch nicht^^

edit: schau mal hier
Hat wohl allgemein was mit dem Delete zutun und weniger mit dem Makro. Noch ein guter Grund, das Makro nicht zu nutzen.(Du vermutest den Fehler dann nämlich nicht im Makro, wie jetzt^^)
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Bu1

Frischling

  • »Bu1« ist der Autor dieses Themas

Beiträge: 66

Beruf: Schüler

  • Private Nachricht senden

3

02.06.2011, 20:16

Danke
:thumbsup:

Zitat

Sämtliche Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt :!:
Sie können nach belieben kopiert und weiterverwändet werden. :P

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Bu1« (02.06.2011, 20:29)


Oberon

Treue Seele

Beiträge: 181

Wohnort: Österreich

Beruf: Student

  • Private Nachricht senden

4

02.06.2011, 20:20

1. Ist das Makro (zumindest teilweise) sinnlos, da delete nichts macht, wenn ein Nullpointer übergeben wird. Siehe http://www.parashift.com/c++-faq/freesto…t.html#faq-16.8
2. Hat das Problem nichts mit dem Makro zu tun. Du löscht da einen ungültigen Zeiger. Der Debugger wird dich weiterbringen, besonders die Aufrufliste (auch genannt (Call-)Stack). Durch meine magischen Kräfte ;) kann ich erkennen, dass du das Buch "C++ für Spieleprogrammierer" von Heiko Kalista verwendest: Der Debugger wird dort in Kapitel 8.8 (Seite 271 bei der 2. Auflage) beschrieben.

Bu1

Frischling

  • »Bu1« ist der Autor dieses Themas

Beiträge: 66

Beruf: Schüler

  • Private Nachricht senden

5

02.06.2011, 20:30

Schon ne weile her aber ja!

Zitat

Sämtliche Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt :!:
Sie können nach belieben kopiert und weiterverwändet werden. :P

Werbeanzeige