例如,如果我有以下内容:
type
TVArray = array of array of Variant;
var
MyArray : TVArray;
然后我将一堆元素添加到MyArray中,以便它有1000个数组,每个数组包含30个变体。
如果我想立即取消分配内存,最好还是首选的方法是什么?
MyArray := nil;
或
SetLength(MyArray, 0);
或
Finalize(MyArray);
或者我是否需要先对子阵列做些什么?各个变体包含哪些内容是否重要?
答案 0 :(得分:8)
这三个都是等价的。你选择哪个是风格问题。我更喜欢第一个(分配nil
),因为它非常简洁。
编译器知道如何释放Variant
值。在释放数组之前,你不需要做任何额外的事情 - 如果你根本不打算释放数组,那么编译器最终会为你最终销毁它。
答案 1 :(得分:4)
变体是托管类型。这意味着当编译器超出范围时,编译器将负责处理与该变体关联的任何资源。像处理字符串,动态数组,接口等一样处理变体的生命周期。
这意味着所有三个变体的含义相同,并正确处理数组及其内容。您可以选择使用您喜欢的任何一种。