释放变体 VarArray
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 吗?
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?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这不是泄漏,但对于相当简单的任务来说,代码太多了。尝试:
It's not a leak, but it's way too much code for a fairly simple task. Try:
不,不,不。变体和变体数组由编译器管理。它们在创建时被初始化,并在超出范围时被释放。他们可能造成内存泄漏的唯一方法是,如果您将一个对象分配给变体的值,然后忘记释放它。
No, no and no. Variants and variant arrays are managed by the compiler. They get initialized when you create them and freed when they go out of scope. The only way they could create a memory leak is if you assigned an object to the variant's value then forgot to free it.