Jeśli chodzi o kod to nie chodziło mi o szczegóły tylko o ogół, jak ta sytuacja wygląda.
Rezerwuje pamięć bo jest mi potrzebna, ale w czasie wykonywania algorytmu, jest potrzebne coraz mniej. Tablica jest bardzo wygodna, bo operuje na jej indeksach.
Hmm, a dało by się zrobić tak żeby stworzyć tablice wskaźników na wskaźniki, dla których zarezerwuje pamięć i potem odwołując się do komórki tablicy np. zwalniać pamięć z wskazywanego przez nią wskaźnika elementu?
Jakby to zaimplementować...
int **t = new int*[n];
for(int i=0; i<n; ++i)
t[i] = new int;
Teraz chyba bym sobie mógł spokojnie zwalniać pamięć w ten sposób:
delete t[i];
Tak przy okazji nasunęło mi się kilka pytań... Tablica wskaźników zawiera adresy i długość wskazywanego obszaru pamięci. Ale na te adresy też przecież pamięć jest potrzebna? Czy miejsce w pamięci na wskaźniki jest tak samo alokowane jak miejsce np. na typ int?
W każdym razie chyba lepsze będzie to rozwiązanie z tablicą wskaźników na wskaźniki i zwalnianie pamięci z nieużywanych w danym czasie elementów, by na końcu zwolnić pamięć z całej tablicy, niż trzymać dane bezpośrednio w dynamicznej tablicy cały czas je przechowując nawet gdy nie są już potrzebne.
Co o tym sądzicie?