2011-04-09 51 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 *上出错。