Skocz do zawartości
nightstalker

Wskaźniki - Help! ;(

Rekomendowane odpowiedzi

Myslełem że juz zrozumiałem o co chodiz z tymi wskaźnikami, ale chyba się myliłem. Program ma losowac 10 punktów (x,y) i zapisywać ich adresy do tablicy.

Punkt zadeklarowany jako rekord. Tablica jako tablica wskaznikow na rekord. Program ładnie losuje 10 punkcików, ale wypisuje 10 razy ten sam ( ostatnio wylosowany punkt ). Nie wiem gdzie tkwi problem... W losowaniu czy w wypisywaniu ( są 2 funkcje ) Pomoże ktoś ?

 

program punkty;{$APPTYPE CONSOLE}uses  SysUtils;typeTPunkt = recordx,y:integer;end;PPunkt = ^TPunkt;TTab = array[1..10] of PPunkt;var  tab:Ttab;  punkt:PPunkt;procedure losuj(var tab:Ttab);var i:integer;beginfor i:=1 to 10 dobeginif i > 10 then exit;if tab[i] = nil thenbeginnew(punkt);punkt^.x := random(10);punkt^.y := random(10);writeln('Wylosowano punkt : x',i,' = ',punkt^.x);writeln('Wylosowano punkt : y',i,' = ',punkt^.y);tab[i]:= @punkt;dispose(punkt);end;end;end;procedure wypisz(tab:Ttab);var i:integer;beginfor i:=1 to 10 dobeginif tab[i] <> nil thenbeginwriteln('Punkt  x',i,' = ',tab[i]^.x);writeln('Punkt  y',i,' = ',tab[i]^.y);end;end;end;begin  randomize;  losuj(tab);  wypisz(tab);  readln;end.

EDIT: Qwa... Znowu mnie oświeciło dopiero po tym jak napisałem posta... Skumałem że w losowaniu mam new i zaraz dispose, czyli ze rezerwuje i zwalniam pamięć co chwile, a pozniej program juz nie ma do niej dostepu. Wywaliłem więc dispose i wkleiłem na końcu programu i działa, ale mam w związku z tym pytanie... Czy zwalniany jest jednoczesnie caly obszar pamieci ktory zarezerwowałem wywołując 10 razy new ? Czy działa to jakoś inaczej ? Prosze, niech mi to ktoś wytłumaczy...

Edytowane przez nightstalker

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...