对象的字节大小,包括成员的大小

时间:2009-04-06 12:53:24

标签: delphi delphi-2009 sizeof

我想知道(用于调试和记录)对象的大小(以字节为单位),但不是像

Sizeof (Object)

但是像'deep sizeof'。例如,如果对象包含哈希映射或列表,则应将该哈希映射或列表所需的实际大小添加到结果中。有没有办法做到这一点,而无需添加

property Size : LongWord read GetByteSize;

每个小物体?

可能是一个愚蠢的问题,但我会试一试;)

编辑:刚刚发现几乎相同的问题:

Recursive Class Instance Size in Delphi

我猜,问题可以结束。对不起!

2 个答案:

答案 0 :(得分:1)

不幸的是,您需要自己编写代码。

不确定这是否有效,但你可能变得非常脏:

  • 以字节为单位查找对象大小。使用TObject.InstanceSize。
  • 将每组4个字节转换为指针,然后检查它是否是TObject。你应该能够做到这一点。如果是TObject,则应重复该步骤。

答案 1 :(得分:0)

由于这是用于调试,你看过FastMM4内存分配器吗?它有一些很好的东西可以追踪内存泄漏。