在64位系統中,.NET Framework爲Int32
分配的內存少於Int64
?在64位系統中,32位變量比64位對象佔用更少的空間?
回答
的Int32和Int64類型應該消耗在所有平臺上相同的空間(這意味着一個Int32消耗在x86和x64相同量的另一個的Int32)。在所有平臺上,Int32應該消耗與Int64不同的金額。
但是,Int32和Int64都是不好的例子,因爲它們是結構體。對象在x64和x86上佔用顯着不同的空間,因爲它們基本上是指針,x64上的指針是x86上的兩倍。這適用於函數地址,跳轉地址,vtables,調用指令等等。 x64編譯的應用程序和用於x64的IL應用程序JIT代碼將遠遠大於x86對應程序。過去,由於編譯器更成熟(這也適用於JIT代碼生成),但x86編碼生成更加成熟並且更加積極地進行了優化,但編譯器趕上了現在,並且現在x64優化處於同等水平,如果不比x86更好。
不,它們消耗相同的空間量,因爲最小的可尋址空間是64位。
@Lucas:它們在寄存器中消耗相同的空間量。記憶中的數量不同。 – 2010-03-12 19:22:57
您的回答很有幫助,但是[您可以做得更好](http://meta.stackexchange.com/q/8259),方法是加入您要鏈接的頁面的摘要或相關部分。這也將有助於您的答案仍然很好,即使您將收錄的鏈接打破了。 – derobert 2012-01-16 17:09:06
- 1. 在64位系統中,32位列佔用的空間比64位少?
- 2. Windows 64位操作系統上的32位或64位Android SDK?
- 3. 邏輯地址空間在64位和32位操作系統
- 4. 32位/ 64位操作系統?
- 5. 32位變量返回64位變量
- 6. 無論系統是32位還是64位,int都是32位還是64位?
- 7. 針對64位VM實例的64位系統上的32位VMWare
- 8. 從32位變爲64位
- 9. GAC(64位系統)比較?
- 10. 32位系統中的32位和64位之間的操作(sint/uint)
- 11. 無論系統是32位還是64位,uint均爲32位?
- 12. 對32位系統中的64位字進行操作
- 13. 64位操作系統上的32位或64位應用程序?
- 14. 編纂的32位系統64位系統 - 兼容性
- 15. 將32位變量的類型更改爲64位變量?
- 16. 什麼告訴32位GCC在64位系統上,使64位二進制
- 17. 32位和64位系統之間的通信
- 18. 在32位操作系統中使用64位dll
- 19. 確實64位代碼佔用32位代碼更多的存儲空間?
- 20. 對32位和64位操作系統的不同計算
- 21. MySQL 32位或64位 - Apache 32位Windows 64位?
- 22. 在32/64位系統上使用16位指針的C++
- 23. C# - 在32位和64位
- 24. 在32位和64位
- 25. Libnids 64位系統
- 26. 從Excel應用程序對象中查找位(32位/ 64位)?
- 27. P /調用在32位和64位系統
- 28. 在64位系統上使用32位SQL服務器ODBC
- 29. 在64位系統上使用32位DLL顯示0x8007000B錯誤
- 30. 32位程序如何能在64位系統中運行
改寫你的答案:給定的結構實例在任何平臺上都佔用相同的內存空間。不同的結構在同一個平臺上消耗不同的內存空間。只根據平臺消耗不同空間的對象。 – 2010-03-12 20:09:45
@ estourodepilha.com:並非總是如此。其中一個例子是當結構包含引用類型字段或平臺相關字段時,例如IntPtr - 相同的結構聲明將在x64上消耗更多的內存。 – 2010-03-12 20:34:45