在玩過不同的數組類型後,我確定每個元素都需要2個「填充」位。例如,如果數組的數據類型爲.int(32位或2^5),則總共有4個專用於陣列的每個元素的存儲位置(總共2^7位)。另一個例子是,如果數據類型是.short(16位或2^4),那麼數組中的每個元素包含64位(2^6)陣列內存佈局
下面是一個示例。
.data
IntArray:
.int 10, 20, 30, 40, 50
(gdb) info variables
0x080490a4 IntArray
(gdb) x/1wt 0x080490a4
0x80490a4 : 00000000000000000000000000001010
(gdb) x/1wt 0x080490a5
0x80490a5 : 00010100000000000000000000000000
(gdb) x/1wt 0x080490a6
0x80490a6 : 00000000000101000000000000000000
(gdb) x/1wt 0x080490a7
0x80490a7 : 00000000000000000001010000000000
(gdb) x/1wt 0x080490a8
0x80490a8 : 00000000000000000000000000010100
很明顯,內存位置0x080490a4
包含數組的第一個元素(值爲10)。同樣顯而易見的是,內存位置0x080490a8
包含該數組的第二個元素。
我的問題涉及0x080490a5
,0x080490a6
,0x080490a7
的內容。這些內存位置的意義是什麼?我忽略了關於數組如何操作的一些細節?
我有點困惑,但我只是想確保我們在同一頁面上。 「2位'填充'」是什麼意思? – Matt 2011-04-06 02:18:46