私が行った場合
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() を使用することをお勧めします