0

我正在学习 GDB。当我运行 x /3b 命令查看 3 字节字符数组时,我会得到两个不同的输出,具体取决于我是否在数组名称前放置了 *。

(gdb) x /3b myThreeCharArray
0x7fffffffe3c0: 4   11  64
(gdb) x /3b *myThreeCharArray
0x400b04 <debug>:   85  72  -119

这两个输出有什么区别?我的理解是 x 命令将向您显示由特定变量表示的内存中的字节。所以我想我认为 x 命令本质上是“取消引用”变量名,但显然情况并非如此。这是怎么回事?

4

1 回答 1

3

gdbx 命令中,获取一个地址并尝试从该内存位置打印值。因此,在第二种情况下,您取消引用myThreeCharArray并生成一个gdb解释为地址并尝试在该“位置”打印内存的值。如果将前 3 个数字转换为十六进制,您会看到这种情况:

64 is 0x40
11 is 0x0B
04 is 0x04

由于字节序,顺序被切换。

于 2013-03-03T19:28:11.637 回答