Speicherfehler trotz new und delete

El_Cattivo

Grünschnabel
Hallo,
gleich mal vorweg: Da ich gerade von c auf c++ umsteige, bin ich recht unerfahren mit vielen Dingen der OOP.
Ich arbeite mit dem Borland Builder 6.0 unter Windows XP
Nun zu meinem Problem:
Ich reserviere mir mittels "new" dynamischen Speicher für 2D-Arrays, den ich am Ende der Methode mit delete [] wieder frei gebe.
Rufe ich diese Methode (wie hier durch erneutes clicken des Buttons) ein weiteres Mal auf, steigt das Programm mit einem Speicherfehler aus. :confused:
Hier mal die (wie ich denke) entscheidenden Quelltexte:
Code:
void __fastcall TMainMenue::BContinueClick(TObject *Sender)
{
EnableDLT();
.
.
.
}

void TMainMenue::EnableDLT(void)
{
//dyn speicherreservierung
double **Array1	= new double *[4];        //Ausstiegspunkt  beim 2. Durchlauf
double **Array2	= new double *[3];

for (int i=0; i<4 ; i++)    Array1[i]	= new double [StrToInt(LabScanNr->Caption)];

for (int i=0; i<3 ; i++)
	{
	Array2[i]= new double [StrToInt(LabScanNr->Caption)];
       }
.
.
.
delete [] Array1;
delete [] Array2;
}

gleiches Problem tritt auf, wenn ich eine Methode iterativ aufrufe, in der Speicher so gehandhabt wird.

Vielen Dank für eure Hilfe

El_Cattivo
 

deepthroat

Erfahrenes Mitglied
Hi.

Du hast vergessen die Unter-Arrays auch wieder zu löschen. Bevor du Array1 und Array2 mit delete[] freigibst mußt du erst noch Array1[0..3] und Array2[0..2] mit delete[] löschen.

Gruß