例如:
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。