2011-04-09 26 views
0

如果我專門處理內存地址,例如,當寫一個調試器(而不是使用指向字符串,浮動等指針,因爲它是有用的這樣做)什麼鍵入我應該使用?理想情況下考慮32/64位的考慮因素。什麼類型的工作/比較內存地址

爲了同樣的目的,我一直在使用的一些adhoc類型,在相同的代碼中,包括int64_t,NSUInteger,char *,void *,intptr_t。

本質上我需要按地址進行比較和排序。謝謝

回答

2

如果你只需要比較地址,使用void *應該是要走的路。這將需要任何類型,並且參考(&)操作員將打印出有效的內存位置。最重要的是,它可以在32位和64位類型之間移植,也可以隨機結構等。等等。除了使用指針的地址(&)外,您可以比較常規的小於比較,而不是指針本身的價值。

如果你需要在這些指針引用的數據,雖然,你會碰到一些麻煩......

希望這有助於。

0

我認爲這是在uintptr_t(從<stdint.h>)和void *之間折騰。兩者都適用於32位和64位環境。我可能會使用uintptr_t,但是您也不會在void *上出錯。