1. 程式人生 > >struct的儲存空間大小問題

struct的儲存空間大小問題

struct CurrencyStruct
        {
            public long Dollars;
            public byte Cents;

            public override string ToString()
            {
                return "$" + Dollars + "." + Cents;
            }
        }

在MAIN方法中檢視起結構的大小  得到16;不是9的解釋!
32位機子上是4位元組作為一個DWORD的 ,它擅長在4個位元組上獲取資料,從記憶體中獲取DWORD是最高效的方法,跨越DWORD的邊界存取通常會降低硬體的效能。所以.NET資料庫會把某些資料型別加上一些空間,使它們佔用的記憶體是4的倍數。
long (8)+byte(1)=9位元組。它加上4位元組後是13因為要是4的倍數 所以只能取16??

上面的解釋還是有問題,應該是這個方法ToString()還是佔用了一定的空間。所以BYTE加3位元組  而方法也佔用了4個位元組的記憶體。
希望得到大家的指點?