在x86系统上,一个内存位置可以容纳4个字节(32/8)的数据,因此在64位系统中,单个内存地址可以为每个内存地址保留8个字节。在GDB中检查堆栈时,情况似乎并非如此,例如:
0x7fff5fbffa20: 0x00007fff5fbffa48 0x0000000000000000
0x7fff5fbffa30: 0x00007fff5fbffa48 0x00007fff857917e1
如果我有这个权利,那么每个十六进制对(48)都是一个字节,因此是第一个内存地址0x7fff5fbffa20:实际上保存的是16个字节的数据,而不是8个。
这让我感到非常困惑,并且有一段时间了,因此,绝对感谢任何输入。
在x86系统上,一个内存位置可以容纳4个字节(32/8)的数据,因此在64位系统中,单个内存地址可以为每个内存地址保留8个字节。当在GDB中检查堆栈时...
简短回答:在x86和x64上,最小可寻址实体都是一个字节:在每种情况下,每个“内存位置”都包含一个字节。您从GDB看到的只是格式化:它正在转储16个连续的字节,因为地址从.... 20增加到.... 30(在左侧)表示。