2010-03-12 35 views

回答

1

的Int32和Int64類型應該消耗在所有平臺上相同的空間(這意味着一個Int32消耗在x86和x64相同量的另一個的Int32)。在所有平臺上,Int32應該消耗與Int64不同的金額。

但是,Int32和Int64都是不好的例子,因爲它們是結構體。對象在x64和x86上佔用顯着不同的空間,因爲它們基本上是指針,x64上的指針是x86上的兩倍。這適用於函數地址,跳轉地址,vtables,調用指令等等。 x64編譯的應用程序和用於x64的IL應用程序JIT代碼將遠遠大於x86對應程序。過去,由於編譯器更成熟(這也適用於JIT代碼生成),但x86編碼生成更加成熟並且更加積極地進行了優化,但編譯器趕上了現在,並且現在x64優化處於同等水平,如果不比x86更好。

+0

改寫你的答案:給定的結構實例在任何平臺上都佔用相同的內存空間。不同的結構在同一個平臺上消耗不同的內存空間。只根據平臺消耗不同空間的對象。 – 2010-03-12 20:09:45

+2

@ estourodepilha.com:並非總是如此。其中一個例子是當結構包含引用類型字段或平臺相關字段時,例如IntPtr - 相同的結構聲明將在x64上消耗更多的內存。 – 2010-03-12 20:34:45

1

不,它們消耗相同的空間量,因爲最小的可尋址空間是64位。

+2

@Lucas:它們在寄存器中消耗相同的空間量。記憶中的數量不同。 – 2010-03-12 19:22:57

1
+0

您的回答很有幫助,但是[您可以做得更好](http://meta.stackexchange.com/q/8259),方法是加入您要鏈接的頁面的摘要或相關部分。這也將有助於您的答案仍然很好,即使您將收錄的鏈接打破了。 – derobert 2012-01-16 17:09:06