今天遇到一个问题,特在此记录,防止以后再次犯同样的错误:

struct UserInfo

{

CString UserName;          //用户昵称

CString IP;                //用户IP

SOCKET socket;             //用户的套接字

bool operator==(const UserInfo &uInfo) const

{

if (socket == uInfo.socket)

return true;

return false;

}

};

这是我定义的结构体,程序中如此初始化:

ZeroMemory(&sClient, sizeof(sClient));

TRACE(sClient.UserName);

sClient.UserName = uMsg.UserName;

然后Trace的时候就报错“有未经处理的异常:  0xC0000005:  读取位置 0xFFFFFFFC 时发生访问冲突”,调试发现sClient.UserName为NULL

解决方法:使用memset或者{0}进行初始化;对象最好通过构造函数初始化

memset,zeromemory,{0}三者的区别请参考:http://blog.csdn.net/tjunxin/article/details/8540259