【发布时间】:2018-12-03 09:50:53
【问题描述】:
如果我有以下引用计数接口的类型声明。
type
ISomeInterface = interface
['{xxxx-xxxx-xxx-xxxx-xxx}']
procedure doThing();
end;
TSomeInterfaceImpl = class(TInterfacedObject, ISomeInterface)
public
procedure doThing();
end;
...
var arrayOfSomeInterface : array of ISomeInterface;
下面的代码会导致内存泄漏吗?
SetLength(arrayOfSomeInterface, 1);
arrayOfSomeInterface[0] := TSomeInterfaceImpl.create();
SetLength(arrayOfSomeInterface, 2);
arrayOfSomeInterface[1] := TSomeInterfaceImpl.create();
据我所知,当在动态数组上调用 SetLength() 时,它会为新动态数组分配新内存,然后将旧数组内容复制到新数组。
旧数组中接口的引用计数发生了什么变化。会适当减少吗?
【问题讨论】:
标签: pascal freepascal delphi