对于将对象存储在列表中的用法有些困惑.
到目前为止,我已经使用了TList并在循环中释放了每个项目.然后我发现TObjectList自动从Free中执行.然后我从TList.Clear的文档中看到这个:
到目前为止,我已经使用了TList并在循环中释放了每个项目.然后我发现TObjectList自动从Free中执行.然后我从TList.Clear的文档中看到这个:
Call
Clear
to empty the Items array and set theCount
to 0.Clear
also
frees the memory used to store theItems
array and sets theCapacity
to 0.
所以基本上是一样的所以
为TList
mylist.Clear; myList.Free;
与TObjectList一样吗?
myList.Free;
TObjectList只能用作项目类或可以存储记录吗?
解决方法
TList不会释放元素,包括清除或自由.
aList.Clear;
将只设置aList.Count:= 0而不释放aList.Items []元素.所以你会泄漏内存.你需要一个明确的免费:
for i := 0 to aList.Count-1 do TObject(aList[i]).Free;
但这是什么TObjectList做…