免费变种VarArray

1 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;
Run Code Online (Sandbox Code Playgroud)

我正在使用Delphi for Win32.

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

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

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

Cra*_*ntz 7

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

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


Mas*_*ler 6

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