释放动态变体数组的最佳/首选方法是什么?

时间:2012-05-18 16:01:42

标签: delphi dynamic-arrays variant

例如,如果我有以下内容:

type
  TVArray = array of array of Variant;
var
  MyArray : TVArray;

然后我将一堆元素添加到MyArray中,以便它有1000个数组,每个数组包含30个变体。

如果我想立即取消分配内存,最好还是首选的方法是什么?

MyArray := nil;

SetLength(MyArray, 0);

Finalize(MyArray);

或者我是否需要先对子阵列做些什么?各个变体包含哪些内容是否重要?

2 个答案:

答案 0 :(得分:8)

这三个都是等价的。你选择哪个是风格问题。我更喜欢第一个(分配nil),因为它非常简洁。

编译器知道如何释放Variant值。在释放数组之前,你不需要做任何额外的事情 - 如果你根本不打算释放数组,那么编译器最终会为你最终销毁它。

答案 1 :(得分:4)

变体是托管类型。这意味着当编译器超出范围时,编译器将负责处理与该变体关联的任何资源。像处理字符串,动态数组,接口等一样处理变体的生命周期。

这意味着所有三个变体的含义相同,并正确处理数组及其内容。您可以选择使用您喜欢的任何一种。