2013-03-03 83 views
0

我正在学习GDB。当我运行x/3b命令查看一个3字节的字符数组时,我得到两个不同的输出,这取决于我是否在数组名前加*。var vs * var的gdb/x命令var

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

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

回答

3

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

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

的顺序切换。