Witam!
Mam taki problem z którym się męcze już dwa tygodnie i ciągle to samo. Jak poprawnie zwolnić pamięć. Banał.
Mam strukturę
struct M
{
// ...
char *d;
char *f;
// ...
}
Teraz wczytując z pliku sturktura po strukturze zajmuje pamiec dla wszystkiego co potrzebuje:
M = new[xxx];
d = new[xxx];
f = new[xxx];
Oczywiście M, d, f to wskaźniki do odpowiednich typów.
Następnie robię
List->Add(M);
Teraz mogę robić wszystko na tym i nic nie powoduje problemów. Dopiero jak próbuje zwolnić pamięć wywala mi naruszenie prawa dostępu. Uwalnianie wygląda mniej więcej tak:
for(int i = 0; i < List->Count - 1; i++){
M *m;
m = static_cast<struct M*>(List->Items[i]);
delete[] m->d;
delete[] m->f;
delete m;
};
delete List;
Co jest z tym nie tak?