在单线程中,一下代码没有问题,但是在多线程中却会出现内存非法操作的问题,请高手讲解一下。
CSocket *pSocket=new CSocket; pSocket->Create(27,SOCK_STREAM);
     
pSocket->Listen(); CSocket socket; pSocket->Accept(socket); CSocketFile *pFile=new CSocketFile(&socket);
CArchive *pArchiveIn = new CArchive(pFile, CArchive::load);

CString rMsg;
pArchiveIn->ReadString(rMsg);在多线程中修改为:
入口:
   ThreadParams* pThreadParams=new ThreadParams;
   pThreadParams->pSocket=new CSocket;
   pThreadParams->pSocket->Create(nPort,SOCK_STREAM);
   pThreadParams->socket=new CSocket;
多线程:
int CSocketThread::ListenSocket(ThreadParams* pThreadParams)
{
CSocket *pSocket=pThreadParams->pSocket; CSocket *pSocket=new CSocket;
pSocket->Create(27,SOCK_STREAM); pSocket->Listen(); CSocket *socket=pThreadParams->socket; pSocket->Accept(*socket);

CSocketFile *pFile=new CSocketFile(socket);
CArchive *pArchiveIn = new CArchive(pFile,CArchive::load);

CString rMsg;
pArchiveIn->ReadString(rMsg); delete pArchiveIn;
delete pFile;
return NULL;
}
出错的代码在
pSocket->Accept(*socket)这行,改为AfxBeginThread的Worker MultiThread模式,也不行。始终不明白为什么。