[C/C++] Schutzverletzung beim delete

ElSer

nicht mehr wegzudenken
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 ? :cry: 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?
 

ElSer

nicht mehr wegzudenken
Danke, hat sich erledigt:)

(m_Klasse2 = (CKlasse2**) new CKlasse2*[Anzahl];
statt
m_Klasse2 = (CKlasse2**) new CKlasse2 [Anzahl];)
 
Oben