为什么一个内存地址只包含 16 个字节的数据?

0 memory

0x8048384 <main+16>: 0x00fc45c7     0x83000000     0x7e09fc7d     0xc713eb02
0x8048394 <main+32>: 0x84842404     0x01e80804     0x8dffffff     0x00fffc45
Run Code Online (Sandbox Code Playgroud)

那么每个内存地址包含16个字节的数据?4x4 = 16。所以 4 个字节是 = 0x00fc45c7

我对吗?

Dar*_*oid 5

它没有。内存中的特定地址通常指向一个字节的内存。但是,您在此处的显示显示了从0x8048384到的每个内存字节0x80483A4- 即 32 字节的内存,组织成 2 行,每行 4 个 4 字节值。

如果您仔细查看左侧,地址不会在行之间增加 1,而是增加 16:84-> 94(以 16 为基数),这告诉您每行显示 16 个字节的内存。这通常比每行 1 个字节更方便,并且这些 16 字节的行被进一步分解为 4 个字节的组,因为使用对齐的 32 位数字非常普遍,每个 4 个字节的组表示。这使得在不求助于其他解释工具的情况下更容易地对信息进行可视化处理。

  • 我想我明白了。所以 0x00fc45c7 位于 0x8048384,0x83000000 位于 (0x8048384+4) 等等。我对么? (2认同)