我有以下代码初始化一个无符号字符数组:
unsigned char ultralightAtr[] = {0x3b,0x8f,0x80,0x01,0x80,0x4f,0x0c,0xa0,0x00,0x00,0x03,0x06,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x68};
当我在gdb中检查ultralightAtr时,我没有得到相同的值:
(gdb) x/20x ultralightAtr
0x7fffffffdd40: 0x70 0xdd 0xff 0xff 0xff 0x7f 0x00 0x00
0x7fffffffdd48: 0x70 0x19 0xbd 0xf7 0xff 0x7f 0x00 0x00
0x7fffffffdd50: 0x00 0xc7 0xfd 0xf7
(gdb)
我在初始化数组时做错了什么,或者我在gdb中打印内存内容的方式有问题吗?
答案 0 :(得分:3)
ultralightAtr
的地址和内容都表明它是一个带有自动存储的本地变量(在堆栈上也称为 )。你可能在gdb 之前检查它的值它的初始化代码是在定义它的函数中运行的。你刚刚在函数地址设置断点并在那里发出了x
命令吗?
如果未在函数中修改此数组,则可以将其设为static
,以便在加载时初始化,而不是每次输入函数时都初始化。