在c中初始化unsigned char数组

时间:2016-08-18 10:19:36

标签: c gdb

我有以下代码初始化一个无符号字符数组:

     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中打印内存内容的方式有问题吗?

1 个答案:

答案 0 :(得分:3)

ultralightAtr的地址和内容都表明它是一个带有自动存储的本地变量(在堆栈上也称为 )。你可能在gdb 之前检查它的值它的初始化代码是在定义它的函数中运行的。你刚刚在函数地址设置断点并在那里发出了x命令吗?

如果未在函数中修改此数组,则可以将其设为static,以便在加载时初始化,而不是每次输入函数时都初始化。