4

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

Sizeof (Object)

但就像一个“深尺寸”。例如,如果对象包含哈希映射或列表,则该哈希映射或列表所需的实际大小应添加到结果中。有什么方法可以做到这一点而不必添加

property Size : LongWord read GetByteSize;

对每一个小物件?

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

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

Delphi中的递归类实例大小

我想,这个问题可以结束了。对于那个很抱歉!

4

2 回答 2

2

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

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

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

既然这是调试用的,那你看过 FastMM4 内存分配器了吗?它有一些用于跟踪内存泄漏的好东西。

于 2009-04-06T16:48:55.680 回答