Schutzverletzung beim delete
Hallo,
wieder mal ein Problem:
Ich lege einen Pointer auf einen Pointer einer Klasse an (m_Klasse2), allokiere diesen (dynamisch) im Konstruktor und allokiere anschließend alle einzelnen Elemente des 'arrays'. Alles gut soweit, alles funktioniert.
Im Destruktor kann ich alle einzelnen Elemente des Arrays deallokieren. Beim freigeben des Pointer auf einen Pointer stürzt mir das Programm allerdings mit einer Schutzverletzung ab.
Warum ? Ich verstehs nicht mehr...
Kann mir wer helfen?
Übrigens sind aller Variablen 'I' in der
Hallo,
wieder mal ein Problem:
Ich lege einen Pointer auf einen Pointer einer Klasse an (m_Klasse2), allokiere diesen (dynamisch) im Konstruktor und allokiere anschließend alle einzelnen Elemente des 'arrays'. Alles gut soweit, alles funktioniert.
Im Destruktor kann ich alle einzelnen Elemente des Arrays deallokieren. Beim freigeben des Pointer auf einen Pointer stürzt mir das Programm allerdings mit einer Schutzverletzung ab.
Warum ? Ich verstehs nicht mehr...
Kann mir wer helfen?
Code:
class CKlasse1 : public CDialog
{
CKlasse2 **m_Klasse2;
int m_Anzahl;
};
CKlasse1::CKlasse1(int Anzahl,CWnd* pParent)::CDialog(pParent)
{
m_Anzahl = Anzahl;
m_Klasse2 = (CKlasse2**) new CKlasse2 [Anzahl];
for(int I=0;I<Anzahl;I++)
m_Klasse2[I] = (CKlasse2*) new CKlasse2(pParent);
}
CKlasse1::~CKlasse1()
{
for(int I=0;I<m_Anzahl;I++)
{
if(m_Klasse2[I]) delete m_Klasse2[I];
}
if(m_Klasse2) delete [] m_Klasse2; // GPF!!!!
}
Übrigens sind aller Variablen 'I' in der
Code:
-Sektion großgeschrieben, aber irgendwas macht sie mir in der Vorschau wieder klein? Bug oder Feature?