Witam
Dlaczego podczas zamykania programu zostaje rzucony wyjątek EAccessViolation.
builder wskazuje na 4 linijkę w "destruktorze" FormDestroy - delete[] Najlepsze_wynikiTrasa[i];.
Teoretycznie wszystko jest jak należy. A może ta pamięć jest już zwolniona ;?
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) //konstruktor
: TForm(Owner)
{
Najlepsze_wyniki = new double[Ilosc_powtorzen];
Najlepsze_wynikiTrasa = new int* [Ilosc_powtorzen];
for (int i = 0; i < Ilosc_powtorzen; i++)
Najlepsze_wynikiTrasa[i] = new int[Ile_miast];
Wynik = new double[Ile_wynikow];
WynikTrasa = new int* [Ile_wynikow];
for (int i = 0; i < Ile_miast; i++)
WynikTrasa[i] = new int[Ile_miast];
Liczba_wynikow = Ile_wynikow;
Liczba_najlepszych = Ilosc_powtorzen;
Index_najlepszych = 0;
Index_wyniku = 0;
najlepszaTrasa = new int[Ile_miast];
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender) // "destruktor"
{
delete[] Najlepsze_wyniki;
for (int i = 0; i < Ilosc_powtorzen; i++)
delete[] Najlepsze_wynikiTrasa[i]; // EAccessViolation - ???? DLACZEGO ???
delete[] Najlepsze_wynikiTrasa;
delete[] Wynik;
for (int i = 0; i < Ile_wynikow; i++)
delete[] WynikTrasa[i]; // EAccessViolation - ???? DLACZEGO ???
delete[] WynikTrasa;
delete[] najlepszaTrasa;
}
//---------------------------------------------------------------------------