[問題] 請問CString這行為什麼會錯?
看板C_and_CPP (C/C++)作者popen (Penpineapple-applepen)時間9年前 (2017/02/19 18:44)推噓5(5推 0噓 7→)留言12則, 5人參與討論串1/1
我有個結構如下:
typedef struct _SOCKET_INFORMATION {
CHAR Buffer[DATA_BUFSIZE];
WSABUF DataBuf;
SOCKET Socket;
DWORD BytesSEND;
DWORD BytesRECV;
CString m_id;
} SOCKET_INFORMATION, *LPSOCKET_INFORMATION;
函式定義如下:
BOOL CreateSocketInformation(SOCKET s, CString str);
BOOL CreateSocketInformation(SOCKET s, CString str)
{
LPSOCKET_INFORMATION SI;
if ((SI = (LPSOCKET_INFORMATION)GlobalAlloc(GPTR,
sizeof(SOCKET_INFORMATION))) == NULL)
{
printf("GlobalAlloc() failed with error %d\n", GetLastError());
return FALSE;
}
else
printf("GlobalAlloc() for SOCKET_INFORMATION is OK!\n");
// Prepare SocketInfo structure for use
SI->Socket = s;
SI->BytesSEND = 0;
SI->BytesRECV = 0;
SI->m_id = str; //這行會當掉!!
SocketArray[TotalSockets] = SI;
TotalSockets++;
return(TRUE);
}
問題如下:
為何我在執行緒裡執行下面這函式
if (CreateSocketInformation(AcceptSocket, str_id) == FALSE)
{
printf("CreateSocketInformation(AcceptSocket) failed!\n");
return 1;
}
它會當在SI->m_id = str;
只不過是單純設個CString字串,不明白怎麼試都會當= =
我只是在結構裡多加個id成員,目的是檢查登入的客戶id是否有重複
下面是原始的範例,我是拿它修改的
http://www.cnblogs.com/zzyoucan/p/5153898.html
--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.229.46.157
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1487501082.A.593.html
推
02/19 18:56, , 1F
02/19 18:56, 1F
→
02/19 18:57, , 2F
02/19 18:57, 2F
→
02/19 19:39, , 3F
02/19 19:39, 3F
→
02/19 20:43, , 4F
02/19 20:43, 4F
推
02/19 21:37, , 5F
02/19 21:37, 5F
→
02/19 21:38, , 6F
02/19 21:38, 6F
推
02/20 13:46, , 7F
02/20 13:46, 7F
→
02/20 14:54, , 8F
02/20 14:54, 8F
推
02/20 14:57, , 9F
02/20 14:57, 9F
推
02/20 17:23, , 10F
02/20 17:23, 10F
→
02/21 10:43, , 11F
02/21 10:43, 11F
→
02/21 10:46, , 12F
02/21 10:46, 12F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章
13
34
30
49