![为什么一个内存地址只包含16个字节的数据?](https://linux22.com/image/1340571/%E4%B8%BA%E4%BB%80%E4%B9%88%E4%B8%80%E4%B8%AA%E5%86%85%E5%AD%98%E5%9C%B0%E5%9D%80%E5%8F%AA%E5%8C%85%E5%90%AB16%E4%B8%AA%E5%AD%97%E8%8A%82%E7%9A%84%E6%95%B0%E6%8D%AE%EF%BC%9F.png)
0x8048384 <main+16>: 0x00fc45c7 0x83000000 0x7e09fc7d 0xc713eb02
0x8048394 <main+32>: 0x84842404 0x01e80804 0x8dffffff 0x00fffc45
那么每个内存地址包含 16 个字节的数据?4x4 = 16。因此 4 个字节 = 0x00fc45c7
我对吗?
答案1
不是的。内存中的特定地址通常指向一字节的内存。但是,此处的显示内容显示的是从0x8048384
到的每个内存字节0x80483A4
- 这是 32 个字节的内存,分为 2 行,每行 4 个 4 字节值。
如果您仔细查看左侧,您会发现行与行之间的地址不是以 1 为增量,而是以 16: 84
->94
为增量(以 16 为基数),这表示每行显示 16 个字节的内存。这通常比每行显示 1 个字节更方便,并且这些 16 字节行进一步细分为 4 字节组,因为使用对齐的 32 位数字很常见,每个 4 字节组代表这些数字。这使得更容易直观地处理信息,而无需借助其他工具进行解释。