khi debug bằng gdb: p ltpHead->tMID thì bị lỗi Cannot access memory at address 0x32310030
dẫn đến Segment fault
mọi người kiểm tra hộ em em sai chỗ nào với nhé. Thanks all
đoạn thư viện sử dụng
Code:
typedef struct
{
VUCHAR bFID_FUNC;
VUCHAR bFID_OPT;
}TAG_FID;
typedef struct
{
VUSHORT wMessageID;
VUCHAR bPrimitive;
VUCHAR bReplyDirect;
}TAG_MID;
typedef struct
{
TAG_CARD_NO tSrcCardNo;
TAG_CARD_NO tDstCardNo;
}TAG_XID;
typedef struct
{
TAG_FID tFID;
TAG_MID tMID;
TAG_XID tXID;
VUSHORT wS_Flag;
}TAG_CARD_COM_HEADER;
typedef struct
{
TAGMW_MSGC_COM_HEADER tMsgComHeader;
DWORD dwSize;
VBYTE* bpData;
}T_SS_TH_MSG_TCPMSGRCV;
typedef struct
{
UINT uiMsgType;
USHORT wTrcLv;
USHORT wBufIdx;
ENUMW_MSGC_BUF_REL_FLG eBufRelFlg;
UINT uiBufpoolId;
VVOID* vpBufPtr;
UINT uiBufSize;
UINT uiUdatSize;
} TAGMW_MSGC_COM_HEADER;
typedef enum
{
EMW_MSGC_BUF_REL_FLG_ON = 0,
EMW_MSGC_BUF_REL_FLG_OFF,
EMW_MSGC_BUF_REL_FLG_MAX
} ENUMW_MSGC_BUF_REL_FLG;
file code sử dụng
Code:
VOID CApiSsFldFldf::DispatchMsg( VTAG T_SS_TH_MSG_TCPMSGRCV* atpMsg )
{
VTAG TAG_CARD_COM_HEADER* ltpHead = new TAG_CARD_COM_HEADER;
DWORD ldwMid;
if( atpMsg == NULL )
{
return;
}
ltpHead = (VTAG TAG_CARD_COM_HEADER*)atpMsg->bpData;
ldwMid = (*(DWORD*)&(ltpHead->tMID) & 0xFFFFFF00 ); //<~ loi truy cap bo nho xay ra o day
return;
}
- - - Nội dung đã được cập nhật ngày 18-02-2016 lúc 02:53 PM - - -
Em xin close topic, lỗi do data truyền vào không ép được kiểu cấu truc của biến ltpHead gây ra lỗi
Ai có đóng góp gì bổ sung thì thêm nhé. Cảm ơn đã đọc topic ak. 