delphi - 如何获取动态数组的内存大小?

标签 delphi

在 Delphi 中,您可以使用 sizeof() 编译器魔术函数获取值类型的大小,但在引用类型上调用 sizeof() 将为您提供指针的大小,而不是它所指向的值的大小。

对于对象,您可以使用InstanceSize方法获取内存大小,但是对于动态数组呢?由于填充,length(MyArray) * sizeof(element) 可能不准确。那么,有没有什么准确的方法来获取动态数组的内存大小呢?

最佳答案

事实上,length(MyArray) * sizeof(element) 对于数组内容来说是准确的,不包括任何内部动态数组或字符串。

如果您希望整个数组使用内存,包括嵌套引用类型内容大小,您可以使用我们的 TDynArray 包装器。它能够将任何动态数组序列化为二进制,包括引用计数成员(如动态数组或字符串)。您可以使用 SaveTo/SaveToStream 方法来实现此目的,并且您可以获得所有内容的实际大小。

看看at this blog article ,它呈现了这个包装器。它是开源的,适用于从 Delphi 5 到 XE4、Win32 和 Win64 平台。

关于delphi - 如何获取动态数组的内存大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17599305/

相关文章:

delphi - 我不断收到 "Invalid class typecast"错误,我不知道为什么

delphi - 扩展节点时如何更改TVirtualStringTree节点图标

delphi - 如何在 GUI 更新期间保持 Delphi 应用程序响应?

delphi - 如果 RLink32 失败,如何链接巨大的 Res

c - N个十进制数需要多少字节

delphi - 如何执行具有不同扩展名的文件的关联应用程序?

Delphi XE8 FireMonkey TMemo 透明?

delphi - DW脚本安装

class - 作为属性的自定义类的数组

Delphi:Clientdataset:.Open 上的 EDatabaseError;设置了 ProviderName