今天遇到一個問題,特在此記錄,防止以後再次犯同樣的錯誤:
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