hi,
powiedz ktos madry czy dajac
int *Tab;
delete (Tab+n);
faktycznie skasuje pamiec przydzielona elementowi numer n?
aha wczesniej alokowalem pamiec uzywajac realloc
no i czemu jak dalem
delete Tab[n]; to bład przy kompilowaniu
przeciez jak daje
int temp = Tab[n]; to smiga
0
0
Źle rozumujesz.
int *Tab;
to wskaźnik na element typu int.
więc jeśli utworzysz dynamicznie tablicę:
Tab = new int[10];
to aby ją skasować napiszesz tak:
delete[] Tab;
To co Ty napisałeś:
delete Tab[n];
zadziała, jeśli elementami tablicy będą wskaźniki, czyli musiałoby być tak:
int **Tab;
Tab = new int*[10];
for (int i=0; i<10; i++)
Tab[i] = new int[5];
i teraz pisząc:
delete Tab[n];
gdzie 0<=n<10 zwolniłbyś pamięć przydzieloną n-temu elementowi tablicy wskaźników Tab.
Mam nadzieję, że się nie machnąłem i że wszystko jest jasne.
0
ano racja, teraz to widze
czyli jesli dobrze zrozumialem to jak dam
delete (Tab+n);
to wtedy skasuje mi pamiec pod adresem Tak+n;// taK?
0
czyli jak dam
delete (Tab+n);
to wtedy skasuje mi pamiec pod adresem Tab+n; //Tak?
Wtedy zwolnisz pamięć wskazywaną przez n-ty wskaźnik w tablicy Tab.