例如:0x7fffd2f48c10
根本原因:当前的x86_64处理器硬件限制所致。因为目前面世的x86_64处理器的地址线只有48条,硬件要求传入的地址的48到63位必须与47位相同。
因为这个相同的原因也就是说剩下的16位要那么是 0x0000 要么是0xffff 也就是说
情况1(剩下的16位都是0):
BIN二进制64位是 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 到
0000 0000 0000 0000 0111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111
16进制 是 0x0000000000000000 到
0x00007fffffffffff
去掉16位 也就是 0x000000000000 到
0x7fffffffffff
情况2(剩下的16位都是1):
BIN二进制64位是 1111 1111 1111 1111 1000 0000 0000 0000 0000 00
gdb调试或者打印地址时候为啥只有48位?
最新推荐文章于 2023-08-10 11:22:57 发布