Delphi动态数组

时间:2016-12-12 11:51:18

标签: arrays delphi dynamic delphi-10-seattle

我正在使用Delphi 10.0 Seattle。

假设我有这样的记录:

TmyRecord = record
  a,b : string;
  ar  : array of string
end;

这样的变量:

v : array of TmyRecord;

和一些像这样的代码:

SetLength(v,2);
SetLength(v[0].ar,3);
SetLength(v[1].ar,2);
SetLength(v[0].ar[0],10);
SetLength(v[0].ar[1],5);
SetLength(v[0].ar[2],7);
...
v[0].ar[0][0] := 'aaaa';
v[0].ar[0][1] := 'bbbb';
....
v[1].ar[1][0] := 'xxxx';

这句话:

SetLength(v,0);

释放所有占用的内存,还是我必须手动释放它?

1 个答案:

答案 0 :(得分:5)

动态数组内存由Delphi自动管理,并在超出范围时发布。

清除v数组会自动释放所有内存,包括记录中ar成员占用的内存。

你不必做任何其他事情。

您还可以通过将v

设置为nil来清除它
v := nil;

或使用内在Finalize

Finalize(v);

所有这些都具有相同的含义。