【发布时间】:2014-02-20 14:00:41
【问题描述】:
我有这个结构:
typedef struct Msg
{
MsgType msgType;
INT msgLen;
VOID *pMessage;
UINT No;
}Msg;
我已经定义了一个指针:
Msg *startPointer = NULL;
那我在做:
startPointer = (Msg *)RxBufferArray[trackSN].IntMsg;
在哪里
RX_BUFFER_STRUCT RxBufferArray[100];
和
typedef struct RX_BUFFER_STRUCT_T {
UINT seqNum;
Msg *IntMsg;
} RX_BUFFER_STRUCT;
那我在做:
temp = (U32 *)startPointer->pMessage;
这给了我一个分段错误。 RxBufferArray[trackSN].IntMsg 的值为 0x0(来自 gdb),trackSN 为 1。
当我点击语句:temp = (U32 *)startPointer->pMessage;,当我尝试打印 startPointer->pMessage 的值时,它说:Cannot访问地址 0x8 处的内存
对解决问题有帮助吗?
【问题讨论】:
-
指针指向的是不确定的。
-
你在哪里初始化了数组
RxBufferArray?如果不初始化,就会导致这种情况。 -
你在哪里为
RxBufferArray[trackSN].IntMsg分配内存? -
谁能帮我初始化 RxBufferArray 或 RxBufferArray[trackSN].IntMsg?我只有全局声明的 RX_BUFFER_STRUCT RxBufferArray[100];陈述。我也在填写 RxBufferArray[ctxt.seqNum].IntMsg = temppIntMsg;在其他一些功能中。 temppIntMsg 也属于同一类型的“Msg”,并且已填充值。
-
有什么帮助吗?
标签: c pointers struct gdb segmentation-fault