2015-11-27 64 views
5

是否有與指針具有相同大小和對齊的整數類型?是否有與指針具有相同大小和對齊的整數類型?

std::intptr_tstd::uintptr_t,但我相信它們沒有與指針本身相同的對齊方式。

+2

它有什麼不同?無論如何,用整數類型混淆指針是未定義的行爲。 –

+0

@BenVoigt我沒那麼做。相反,我在運行時爲虛擬機實現計算數據結構佈局,如果整數與指針具有相同的佈局,則更容易。 – rightfold

+0

但是如果你在運行時做結構佈局,對齊不應該是一個問題:只要在所有對齊的對齊需求重要的地方添加顯式的填充字段,你應該沒問題。 – rodrigo

回答

4

並非所有指針類型都具有相同的大小和對齊方式,這使得任何單個整數類型都不可能具有與所有指針類型相同的大小和對齊方式。

對於某些情況,對象指針,函數指針和指向成員的指針有不同的要求。但是在一些平臺上,即使char*int*也有不同的大小。

相關問題