在Linux上,在C/C++中,指针是否会设置MSB?

3 c c++ linux pointers

我想使用一个长整数,当设置MSB时它将被解释为数字,否则它将被解释为指针.那么这项工作还是会遇到C或C++中的问题?

这是在64位系统上.

编辑清晰和更好的描述.

Mat*_*son 14

在x86-64上,你将有一个超过47位的指针,其地址设置为第63位,因为"架构支持的最大位数"(当前为48位)以上的所有位都必须具有相同的值作为价值本身最重要的一点.(这是0007以上的任何地址FFFF FFFF FFFF将是FFF8 0000 0000 0000 - 其间的所有内容都是"无效"作为指针)

这可能只是内核使用的地址,但我不确定它是否可以保证.

但是,我会尽量避免使用这样的技巧 - 它可能会在某些时候回来困扰你.

  • [这里是Mac程序员的位置](http://en.wikipedia.org/wiki/Mac_OS_memory_management#32-bit_clean) (2认同)

Mik*_*ine 6

人们尝试的招数这样之前.

从长远来看,它永远不会很好.

根本就不要这样做.

编辑:更好的链接 - 请参阅"bit31"的引用,之前从未按设置返回.一旦它可以被设置(超过2演出的内存,喘息!)它会打破顽皮的程序,因此一旦这么多的内存成为常态,程序需要选择这个选项,因为人们使用这样的技巧(除其他外).而现在我的可爱,简短和重点已经变得太长了:-)