指針大小與32位、64位系統


某天寫程序時輸出了 sizeof() 某整型指針,結果發現居然不是 4,非常驚訝,如下:

下面就來解釋一下為什么:

無論內存地址還是其他數據,在運算時都需要保存在寄存器之中,而結果是 8,說明了寄存器的大小是 8 個字節,即 64 bit。

我們經常說32位系統或者64位系統,實際上說的是 CPU 一次處理數據的能力。

我們可以將其理解為整個數據通路包括寄存器、處理器、總線等等都是 32 或 64 位(雖然不全是這樣)。

64位計算機架構一般具有 64 位寬的整數型寄存器,而只有整數寄存器(integer register)才可存放指針值(內存數據的地址),因此指針的大小就自然是 8 個字節了。

在 32 位系統中,地址的大小是 32 bit,因此其最大尋址空間為 pow(2, 32) = 4GB,也即 32 位系統可以支持的最大內存為 4GB;而在 64 位系統中,其最大尋址空間為 2 的 64 次方。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM