我正在使用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);
释放所有占用的内存,还是我必须手动释放它?
答案 0 :(得分:5)
动态数组内存由Delphi自动管理,并在超出范围时发布。
清除v
数组会自动释放所有内存,包括记录中ar
成员占用的内存。
你不必做任何其他事情。
您还可以通过将v
nil
来清除它
v := nil;
或使用内在Finalize
:
Finalize(v);
所有这些都具有相同的含义。