[英]Delphi dynamic array
I'm using Delphi 10.0 Seattle. 我正在使用Delphi 10.0 Seattle。
Suppose I have a record like this: 假设我有一条这样的记录:
TmyRecord = record
a,b : string;
ar : array of string
end;
And a variable like this: 和这样的变量:
v : array of TmyRecord;
and some code like this: 和一些这样的代码:
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';
Will this statement: 请问这个说法:
SetLength(v,0);
free all of the occupied memory, or do I have to free it manually? 释放所有占用的内存,还是我必须手动释放它?
Dynamic array memory is automatically managed by Delphi and is released when they go out of scope. 动态数组内存由Delphi自动管理,并在超出范围时释放。
Clearing v
array will automatically release all memory including the ones occupied by ar
member of your record. 清除v
数组将自动释放所有内存,包括记录中ar
成员占用的内存。
You don't have to do anything else. 您无需执行其他任何操作。
You can also clear v
array by setting it to nil
您也可以通过将v
数组设置为nil
来清除它
v := nil;
or by using the intrinsic Finalize
: 或使用固有的Finalize
:
Finalize(v);
All of these have identical meaning. 所有这些都具有相同的含义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.