数组的长度应该在使用后设置为零吗?

时间:2016-05-11 08:14:37

标签: arrays delphi

我想知道在使用后将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吗?

2 个答案:

答案 0 :(得分:6)

假设MyArray是局部变量,那么根本没有理由在所提供的代码中最终确定变量。一旦变量离开范围,它将被最终确定。明确地这样做没有任何好处。

但是,有时候,你有一个变量,其范围比你使用数组的时间长得多。在这些情况下,一旦完成变量就可以完成变量,以便返回内存。

我个人更喜欢

MyArray := nil;

Finalize(MyArray);

在我看来更容易跳出作为最终陈述。您的

SetLength(MyArray, 0);
在浏览代码时,

看起来像是在分配。

答案 1 :(得分:2)

当没有任何引用它时,动态数组会自动释放。

如果您需要手动执行此操作,我更愿意使用以下方法。这看起来比其他方法清楚。

MyDynamicArray = nil; 

它设置零参考的自然环境,并让内存管理器在适当的时候释放它。