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吗?
答案 0 :(得分:7)
这不是泄漏,但对于一项相当简单的任务来说,代码太多了。尝试:
FUNCTION SystemspartsClT.KeyFound(
Key : AluCostDict.SystemspartskeyT) : BOOLEAN;
BEGIN
Result := t.Locate('System;PartType',
VarArrayOf([Key.System, Key.PartType]), []);
END;
答案 1 :(得分:6)
不,不,不。变量和变体数组由编译器管理。它们在您创建它们时被初始化,并在它们超出范围时被释放。他们创建内存泄漏的唯一方法是,如果您为变量的值分配了一个对象,则忘记释放它。