编程基础问题 多线程内存溢出...
编译时没问题,点击按钮就有内存溢出问题,请问各位大哥我该如何修改代码呢?
UINT _UDPThread(LPVOID lparam){ SOCKET socket1; CiPowerDlg *pDlg =(CiPowerDlg *)lparam; //InitWinsock(); WSADATA wsaData; int iErrorCode; if (WSAStartup(MAKEWORD(2,1),&wsaData)) //调用Windows Sockets DLL { WSACleanup(); return 1; } struct sockaddr_in local; struct sockaddr_in from; int fromlen =sizeof(from); local.sin_family=AF_INET; local.sin_port=htons(8080); ///监听端口 local.sin_addr.s_addr=INADDR_ANY; ///本机 socket1=socket(AF_INET,SOCK_DGRAM,0); bind(socket1,(struct sockaddr*)&local,sizeof(local)); while (1) { int len=0; char buffer[1024]="\0"; //printf("waiting for message from others-------------\n"); len=recvfrom(socket1,buffer,sizeof(buffer),0,(struct sockaddr*)&from,&fromlen); if (len!=SOCKET_ERROR) { pDlg->m_neirong=inet_ntoa(from.sin_addr); pDlg->UpdateData(FALSE); //SetDlgItemText(IDC_neirong,(LPCTSTR)inet_ntoa(from.sin_addr)); //printf("printf --%s\n",inet_ntoa(from.sin_addr)); for(int i=0;i<len;i++) { pDlg->m_neirong=buffer[i]; pDlg->UpdateData(FALSE); //SetDlgItemText(IDC_neirong,(LPCTSTR)buffer[i]); //printf("%0x",buffer[i]); } //printf("\n"); ////给cilent发信息 //sendto(socket1,buffer,len,0,(struct sockaddr*)&from,fromlen); } Sleep(1000); } closesocket(socket1); delete pThreadLisen;}//这个是开始监听按钮void CiPowerDlg::OnBnClickedmy(){ pThreadLisen=::AfxBeginThread(_UDPThread,this);}