Delete []

Return FALSE

Grünschnabel
Zalutte,

ich hab ein problem bei einem Destruktor, wo ich speicher freigeb'

Particle::~Particle()
{
Protokoll.Print("\nPartikelsystem: Starte Löschvorgang\n");
if (m_pParticles){
delete [] m_pParticles;
m_pParticles = NULL;}
Protokoll.Print("Partikelsystem: Partikel gelöscht\n");

if (m_Verts){
delete [] m_pVerts; //<--- genau HIER meldet sich der Debugger
m_Verts = NULL;}
Protokoll.Print("Partikelsystem: Vertices gelöscht2\n");
//...........

... der debugger meldet:
_block_type_is_valid(pHead->nBlockUse)
Line: 47 dbgdel.cpp

hatte schon mal einer dasselbe problem??
ich seh mom ned durch, m_pVerts sollte sauber sein, brauch es die ganze zeit durch, nur beim ausstieg kommt das lästige 'ding' :) nä, ich hasse diesen Ton

moin, ich zähl' auf euch...
 
Das assert sagt prinzipiell aus, dass der Heap korumpiert wurde z.b:

- mehrfaches löschen
- überschreiben von boundaries
- mit new allokieren, mit delete[] freigeben (oder umgekehrt)
- usw.

Der Fehler ist leider aus dem Code nicht eindeutig ersichtlich. Er kann schon vorher aufgetreten sein und wird erst beim freigeben des Speichers entdeckt.
Am besten du durchforstest deinen Code mal anch verdächtigen Operationen.
Du kannst auch mal ein bisschen mit dem DebugHeap "spielen", vielleicht findest du damit was (_Crt...)
 
Hmm, genau könnte auch sein, bleibt die Frage wieso da nicht ein Compile-Time error kommt? hast du tatsächlich m_Verts & m_pVerts (würde dir dringen davon abraten zwei Variablen zu verwenden, die sich nur durch den Präfix unterscheiden)
 

Neue Beiträge

Zurück