我有以下代码初始化一个无符号字符数组:
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 中打印内存内容的方式有问题?
最佳答案
ultralightAtr
的地址和内容都表明它是一个具有自动存储功能的局部变量(又名在堆栈上)。您可能在 它的初始化代码在定义它的函数中运行之前使用 gdb 检查它的值。您是否刚刚在函数地址处设置了一个断点并在那里发出了 x
命令?
如果此数组未在函数中修改,您可以将其设置为static
,以便在加载时而不是每次进入函数时对其进行初始化。
关于c - 在c中初始化unsigned char数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39015657/