不确定这是否是一个明显可怕的误解,但我一直在检查记忆方面遇到这么麻烦。以下是使用x/8w
进行检查的gdb中的以下内容。
0xbffff7a0: 0xb7f9f729 0xb7fd6ff4 0xbffff7d8 0x08048529
0xbffff7b0: 0xb7fd6ff4 0xbffff870 0xbffff7d8 0x00000000
因此,我假设0xb7f9f729
位于0xbffff7a0
,然后0xb7fd6ff4
位于0xbffff7a4
,等等。您能解释一下这是如何工作的吗?那是从第一个存储器部分到下一个存储器部分的16个字节,每4个字节是否包含它自己的字?
我很难掌握这个记忆概念,任何人都知道一个很好的资源,让学习变得更容易吗?
答案 0 :(得分:2)
是的,两个问题都是。
gdb(1)
将w
命令中的x/8w
修饰符理解为“四字节字”,因此您将以四个为一组打印32个字节。 gdb(1)
只是为了便于阅读而在短线中排除它们。
我应该提一下,打印的确切值实际上取决于platform endianness。
您可以使用x/32
获得类似但可能更易理解的布局。
全部都在the fine manual
。