释放不为空的TList<Integer>
不会导致内存泄漏,因为Integer的大小等于指针,并且TList可以完美地处理指针。 (据我所知。)释放不为空的TList<String>
也不会导致内存泄漏,因为String本身是一个指针,当不再需要它时,会小心地释放它在Delphi内部的某个位置。
但是,释放任何不为空的TList<SomeClass>
总是会导致内存泄漏,这是为什么的。
我不明白的是为什么释放不为空的TList<Int64>
不会产生内存泄漏。
对不起,菜鸟问题。
最佳答案
TList<T>
只是对T
动态数组的包装。 T
的动态数组是托管类型,因此不需要显式销毁。
这将保留数组的元素。由于Int64
是值类型,因此不需要显式销毁。
通常,您只需要销毁创建的内容即可。您创建了列表,需要销毁它。您没有自己创建元素,因此不需要销毁它们。
关于delphi - 为什么释放不为空的TList <Int64>不会导致内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29109719/