如果我做
class x
{
int a; // here we have 2 integers, each reference has 4 bytes itself
int b;
public int GetSize()
{
// this function is supposed to return size of the class in operating memory in bytes
return sizeof(int) * 2;
// OR should it be this?
return sizeof(int) * 2 + IntPtr.Size * 2;
}
}
如果我对某种类型(例如 int 或 double)调用 sizeof,它会返回该值使用多少 ram?或者它也计算引用本身的大小。我知道 c# 中的每个引用都至少占用 4 个字节(因此 bool 等,通常是内存便宜的类型,在 c# 中是相当昂贵的内存)。
如果我想知道到底吃了多少操作内存int x = 5;
,我应该只数sizeof(int)
还是数sizeof(int) + IntPtr.Size
?
注意:我知道这Marshal.SizeOf
允许您调用一些特殊函数,该函数返回非托管对象/类型的精确大小,但这对我来说似乎太慢了。我需要一种方法来获取尽可能少消耗 cpu 的对象大小,所以我宁愿只使用本机 sizeof()