delphi - 为什么释放不为空的TList <Int64>不会导致内存泄漏?

标签 delphi generics memory-leaks int64 tlist

释放不为空的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/

相关文章:

delphi - 在运行时创建对象

c++ - 构建 C/C++ 库以将其链接到 Delphi 应用程序中......如何?

delphi - Delphi 7:将TString存储到SQLite3数据库字段中

java - 为什么 Java 编译器在将通配符与 extends 一起使用时甚至限制向列表中添加正确类型的元素

java - 在尊重差异的同时多次继承通用接口(interface)

ruby-on-rails - 使用具有大量数据的 highChart 的 Rails 内存泄漏

delphi - 关于创建类结构的想法

c# - 在通用参数中使用多态性

python找出已添加哪些列表以诊断内存泄漏

ios - 在 Metal 中使用自定义计算着色器时发生内存泄漏