例如:
type
TRec = record
I : Integer;
S : String;
R : Real;
end;
PRec = ^TRec;
procedure TForm1.Button4Click(Sender: TObject);
var
Rec : PRec;
begin
New(Rec);
Rec^.I := 10;
Rec^.S := 'The Hello Word';
Rec^.R := 6.34;
......
Dispose(Rec);
end;
注意:
關鍵字New/Dispose組合可以給自定義結構等已知大小的機構指針開辟記憶體空間以及回收記憶體。而且比用GetMem()和AllocMem()要安全和友善。但是要注意不能給PChar和無類型指針開辟記憶體,因為編譯器不知道要配置設定多少位元組的記憶體空間。
是以,GetMem()和AllocMem()通常用于給編譯器預先不知大小的結構配置設定記憶體。記住不要操作申請記憶體之外的資料,這會引發著名的Access Voilation錯誤。
應該用FreeMem()去清除GetMem()和AllocMem()申請的記憶體空間。值得一提的是,相比較GetMem()而言,AllocMem()要來得更安全一些。因為AllocMem()總是把申請到的記憶體初始化為0。