1

释放非空TList<Integer>不会导致内存泄漏,因为 Integer 在大小上等于指针,而 TList 完美地处理指针。(据我所知。)释放不为空TList<String>也不会导致内存泄漏,因为 String 本身是一个指针,当不再需要它时,它会在 Delphi 内部的某个地方小心地释放。

但是,释放任何非空TList<SomeClass>的总是会产生内存泄漏,这是可以理解的。

我不明白的是为什么释放不为空TList<Int64>不会产生内存泄漏。

对不起菜鸟问题。

4

1 回答 1

4

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

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

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

于 2015-03-17T21:17:00.940 回答