1

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

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

然后我将一堆元素添加到 MyArray 中,这样它就有 1000 个数组,每个数组有 30 个变体。

如果我想立即释放内存,最好或首选的方法是什么?

MyArray := nil;

或者

SetLength(MyArray, 0);

或者

Finalize(MyArray);

还是我需要先对子数组做些什么?各个变体包含什么重要吗?

4

2 回答 2

8

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

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

于 2012-05-18T16:03:13.517 回答
4

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

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

于 2012-05-18T16:05:49.160 回答