为什么freeing not empty TList<Int64>不会导致内存泄露?

Why freeing not empty TList<Int64> does not cause memory leak?

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

然而,释放任何不为空的 TList<SomeClass> 总是会产生内存泄漏,这是为什么。

我不明白的是为什么 freeing not empty TList<Int64> 不会产生内存泄漏。

抱歉这个菜鸟问题。

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

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

一般来说,你只需要摧毁你创造的东西。你创建了列表,你需要销毁它。您没有自己创建元素,因此不需要销毁它们。