Jim*_*pas 1 arrays delphi dynamic delphi-10-seattle
我正在使用Delphi 10.0 Seattle.
假设我有这样的记录:
TmyRecord = record
a,b : string;
ar : array of string
end;
Run Code Online (Sandbox Code Playgroud)
和这样的变量:
v : array of TmyRecord;
Run Code Online (Sandbox Code Playgroud)
和一些像这样的代码:
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';
Run Code Online (Sandbox Code Playgroud)
请问这句话:
SetLength(v,0);
Run Code Online (Sandbox Code Playgroud)
释放所有占用的内存,还是我必须手动释放它?
动态数组内存由Delphi自动管理,并在超出范围时发布.
清除v数组将自动释放所有内存,包括ar记录成员占用的内存.
你不必做任何其他事情.
您也可以v通过将其设置为清除数组nil
v := nil;
Run Code Online (Sandbox Code Playgroud)
或者使用内在的Finalize:
Finalize(v);
Run Code Online (Sandbox Code Playgroud)
所有这些都具有相同的含义.
| 归档时间: |
|
| 查看次数: |
1145 次 |
| 最近记录: |