天天看点

Delphi中自定义结构体的应用

例如:

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。

继续阅读