我想知道在使用后将Delphi的数组长度设置为0是否是正确的做法。
var
MyArray : array of TObject;
begin
SetLength(MyArray, N);
// do something with MyArray (add items and use it..)
SetLength(MyArray, 0);
end;
我有理由将长度设为0吗?
答案 0 :(得分:6)
假设MyArray
是局部变量,那么根本没有理由在所提供的代码中最终确定变量。一旦变量离开范围,它将被最终确定。明确地这样做没有任何好处。
但是,有时候,你有一个变量,其范围比你使用数组的时间长得多。在这些情况下,一旦完成变量就可以完成变量,以便返回内存。
我个人更喜欢
MyArray := nil;
或
Finalize(MyArray);
在我看来更容易跳出作为最终陈述。您的
SetLength(MyArray, 0);
在浏览代码时,看起来像是在分配。
答案 1 :(得分:2)
当没有任何引用它时,动态数组会自动释放。
如果您需要手动执行此操作,我更愿意使用以下方法。这看起来比其他方法清楚。
MyDynamicArray = nil;
它设置零参考的自然环境,并让内存管理器在适当的时候释放它。