<!--CodeS-->
type
PData = ^TData;
TData = record
A,
B: Integer;
end;
-----------
procedure TForm1.Button1Click(Sender: TObject);
var
A: PData;
begin
New(A);
A^.A := 1;
A^.B := 2;
caption := inttostr(A^.A + A^.B);
Dispose(A);
caption := inttostr(A^.A + A^.B + 10);
end;
<!--CodeE-->
분명히 New로 메모리를 할당 받고 Dispose로 해제했지만 caption의 결과는 13입니다.
오류도 전혀 나지 않고요.
그리고 A^.A 이런식으로 역참조를 하지 않고 A.A만 해도 원하는 값을 얻을 수 있는 이유는 뭔가요?
궁금합니다...
메모리해제하고 바로 그 곳을 억세스하면 대부분의 경우는 에러없이 접근할 수 있습니다.
델파이에서 포인터참조는 묵시적(implicit)으로 사용할 수 있습니다.
explicit use: A^.A
implicit use: A.A