这可不一样呀!!!!

前段时间,再调试项目的时候,发现出了莫名奇妙的问题,后来经过深入的跟踪,才发现了。这里期望大家注意一下。

typedef structstrMsg{

......

} 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);

失之毫厘,差之千里呀。

你可能感兴趣的:(这可不一样呀!!!!)