1
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;

I am using Delphi for Win32.

Does this function create a memory leak or not ?

Should I free the variant v as vararray and how?

Should I free or initialize the local variant v?

4

2 回答 2

7

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

FUNCTION SystemspartsClT.KeyFound(
    Key : AluCostDict.SystemspartskeyT) : BOOLEAN;
BEGIN
   Result := t.Locate('System;PartType', 
                 VarArrayOf([Key.System, Key.PartType]), []);
END;
于 2009-09-17T13:05:45.460 回答
6

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

于 2009-09-17T13:05:54.640 回答