为什么释放不空TList <int64>不会导致内存泄漏?</int64>

时间:2015-03-17 21:08:23

标签: delphi generics memory-leaks int64 tlist

Freeing not empty TList<Integer>不会导致内存泄漏,因为Integer等于指针的大小,而TList完全处理指针。 (据我所知这一点。)Freeing not empty TList<String>也不会导致内存泄漏,因为String本身就是一个指针,并且在Delphi内部的某个地方被小心释放了。不再需要了。

然而,释放任何非空TList<SomeClass>总是会产生内存泄漏,并且理解了原因。

我不理解的是为什么释放空TList<Int64>不会导致内存泄漏。

对于noob问题抱歉。

1 个答案:

答案 0 :(得分:4)

TList<T>只是动态数组T的包装器。动态数组T是托管类型,因此不需要显式销毁。

这会留下数组的元素。由于Int64是值类型,因此不需要显式销毁。

作为一般规则,您只需要销毁您创建的内容。你创建了列表,你需要销毁它。您没有自己创建元素,因此您不需要销毁它们。