簡體   English   中英

為什么不從int的地址回​​讀給我int的正確值(C&gdb)

[英]Why doesn't reading back from the address of an int give me back the correct value of the int (C & gdb)

我有使用gdb調試的ac程序。 這是在Ubuntu x86上完成的,並且使用gcc編譯了c程序。 我一個接一個地聲明兩個int變量

int a = atoi (argv[1]);
int b = atoi (argv[2]);

我傳遞給這些的值分別是2和4。 現在,我打破這些行並進行調試。 根據以下數據,似乎int b從地址0xbffff048開始,並占用0xbffff048、0xbffff049、0xbffff04a,0xbffff04b。 而且int b從下一個地址0xbffff04c開始也是有意義的。 但是,如果我顯示這四個地址的值,則返回的十六進制值不等於十進制4(這是在應用程序中確認並在gdb調試中打印的b值)。 我在這里解釋/做錯了什么?

(gdb) display a
2: a = 2
(gdb) display b
3: b = 4
(gdb) display &a
4: &a = (int *) 0xbffff04c
(gdb) display &b
5: &b = (int *) 0xbffff048
(gdb) x  0xbffff048
0xbffff048:     0x00000004
(gdb) x  0xbffff049
0xbffff049:     0x02000000
(gdb) x  0xbffff04a
0xbffff04a:     0x00020000
(gdb) x  0xbffff04b
0xbffff04b:     0x00000200

您看到的值2在整數指定的4個字節之后。 您的輸入4就在那里占據第一個半字節。

我認為評論可以更好地解釋它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM