【发布时间】:2011-04-06 02:09:05
【问题描述】:
在尝试了一些不同的数组类型之后,我确定每个元素都需要 2 位“填充”。例如,如果数组的数据类型是 .int(32bits 或 2^5),那么总共有 4 个内存位置(总共 2^7 位)专用于数组的每个元素。另一个例子是如果数据类型是 .short(16 bits or 2^4) 那么数组的每个元素包含 64bits(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位'填充'”是什么意思?