前段时间,再调试项目的时候,发现出了莫名奇妙的问题,后来经过深入的跟踪,才发现了。这里期望大家注意一下。
typedef struct strMsg{
......
} t_strMsg;
MsgGet(char * MsgBuf)
{
ASSERT(!MsgBuf);
t_strMsg * tempMsg = (t_strMsg *)MsgBuf + sizeof DWORD;
...
}
我想,有的人已经看出了问题的所在了吧。就在于t_strMsg * tempMsg = (t_strMsg *)MsgBuf + sizeof DWORD;这句话上,他违背了你的意愿,他可不是偏移四个字节,而是偏移了4*sizeof(t_strMsg );要想让他如你所愿应该是如下:t_strMsg * tempMsg = (t_strMsg *)(MsgBuf + sizeof DWORD);
失之毫厘,差之千里呀。