Freeing not empty TList<Integer>
不会导致内存泄漏,因为Integer等于指针的大小,而TList完全处理指针。 (据我所知这一点。)Freeing not empty TList<String>
也不会导致内存泄漏,因为String本身就是一个指针,并且在Delphi内部的某个地方被小心释放了。不再需要了。
然而,释放任何非空TList<SomeClass>
总是会产生内存泄漏,并且理解了原因。
我不理解的是为什么释放空TList<Int64>
不会导致内存泄漏。
对于noob问题抱歉。
答案 0 :(得分:4)
TList<T>
只是动态数组T
的包装器。动态数组T
是托管类型,因此不需要显式销毁。
这会留下数组的元素。由于Int64
是值类型,因此不需要显式销毁。
作为一般规则,您只需要销毁您创建的内容。你创建了列表,你需要销毁它。您没有自己创建元素,因此您不需要销毁它们。