2013-03-03 110 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 

的順序切換。