Здравствуйте!
Сколько не читал статей об указателях - так и не понял, Dispose и New ведь лишь возвращают память куче, не очищая ее? Потому что работа такой программы:
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | program test;
{$APPTYPE CONSOLE}
uses
SysUtils;
procedure tst(b1: boolean );
var p:^ integer ;
begin
if b1 then begin
New(p);
p^:= 666 ;
dispose(p);
end else begin
New(p);
writeln (p^);
dispose(p);
end ;
end ;
begin
tst( true );
tst( false );
readln;
end .
|
Выводит в консоль 666.
Значит, выходит, даже при вызове New затем все равно придется вручную чистить память, на которую указывает наш указатель?