为什么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
是值类型,因此不需要显式销毁。
一般来说,你只需要摧毁你创造的东西。你创建了列表,你需要销毁它。您没有自己创建元素,因此不需要销毁它们。
释放非空TList<Integer>
不会导致内存泄漏,因为Integer在大小上等于指针,而TList完美地处理了指针。 (据我所知。)释放非空 TList<String>
也不会导致内存泄漏,因为 String 本身是一个指针,当它不再是 Delphi 的内部时,它会被小心地释放需要。
然而,释放任何不为空的 TList<SomeClass>
总是会产生内存泄漏,这是为什么。
我不明白的是为什么 freeing not empty TList<Int64>
不会产生内存泄漏。
抱歉这个菜鸟问题。
A TList<T>
只是 T
动态数组的包装器。 T
的动态数组是托管类型,因此不需要显式销毁。
这就剩下数组的元素了。由于 Int64
是值类型,因此不需要显式销毁。
一般来说,你只需要摧毁你创造的东西。你创建了列表,你需要销毁它。您没有自己创建元素,因此不需要销毁它们。