在.NET中,有没有办法确定复杂对象的总大小?该对象由其他对象组成,可能引用其他复杂对象。该对象所封装的一些对象可能是POD,而其他对象可能不是。
在.NET中,有没有办法确定复杂对象的总大小?该对象由其他对象组成,可能引用其他复杂对象。该对象所封装的一些对象可能是POD,而其他对象可能不是。
棘手的问题...
如果两个对象指向同一个字符串变量,那么哪一个“拥有”这个字符串?听起来你需要模拟垃圾回收才能得到真正的答案。并不是很轻量级。
此前在StackOverflow的其他地方已经回答过:
您需要引入不安全代码(由于需要指针操作)- 代码如下:
static unsafe int CalcSize(object obj)
{
RuntimeTypeHandle th = obj.GetType().TypeHandle;
int size = *(*(int**)&th + 1);
return size;
}
试一下 System.Runtime.InteropServices.Marshal.SizeOf()
。
Marshal.SizeOf()
无法考虑子对象的大小。 - drharris