免费变种VarArray

时间:2009-09-17 12:58:52

标签: delphi variant

FUNCTION SystemspartsClT.KeyFound(Key : AluCostDict.SystemspartskeyT) : BOOLEAN;
VAR v :  Variant;
BEGIN
   v      := VarArrayCreate([0,1], VarInteger);
   v[0]   := Key.System;
   v[1]   := Key.PartType;
   Sucess := t.Locate('System;PartType', v, []);
   v      := NULL;
   Result := Sucess;
END;

我正在使用Delphi for Win32。

此功能是否会造成内存泄漏?

我应该将变种v作为vararray释放吗?

我应该免费或初始化本地变体v吗?

2 个答案:

答案 0 :(得分:7)

这不是泄漏,但对于一项相当简单的任务来说,代码太多了。尝试:

FUNCTION SystemspartsClT.KeyFound(
    Key : AluCostDict.SystemspartskeyT) : BOOLEAN;
BEGIN
   Result := t.Locate('System;PartType', 
                 VarArrayOf([Key.System, Key.PartType]), []);
END;

答案 1 :(得分:6)

不,不,不。变量和变体数组由编译器管理。它们在您创建它们时被初始化,并在它们超出范围时被释放。他们创建内存泄漏的唯一方法是,如果您为变量的值分配了一个对象,则忘记释放它。