我有一臺服務器和一個客戶端。我正在使用winsock2。客戶端發送4個字節:C++ winsock2壞指針斷點觸發
char *ack = new char[4];
sprintf(ack, "%d", counter);
sendto(clientSocket, ack, 4, 0, (struct sockaddr*)&remote, sizeof(remote));
和服務器接收這些4個字節:
char* acks = new char[4];
if((bytes = recvfrom(serverSocket, acks, 4, 0, (struct sockaddr*)&remote, &remote_size)) == SOCKET_ERROR) {
cout << "socket error = " << WSAGetLastError() << endl;
break;
}
if(bytes > 0) {
sscanf(acks, "%d", &i);
}
我得到這個錯誤,我無法弄清楚如何解決它:
檢測到嚴重錯誤c0000374
server.exe觸發了一個斷點。
我知道指針和內存分配有問題。但我對C++不太好,我不知道該怎麼做。
如果你確定char的大小是5的話,爲什麼不只是'char acks [5] = {0};'另外,你能顯示「remote」和「remove_size」的聲明嗎? – Brandon
大小實際上是4.我嘗試了不同的事情,並忘記將代碼恢復到正確的形式。數組指針的聲明應該是: 'SOCKADDR_IN remote; int remote_size = sizeof(remote);' 並感謝您的幫助。 – corneliu
我實際上編輯了我的原始帖子並修正了char數組指針的長度 – corneliu