CSocket一Accpet就报错,该怎么处理

CSocket一Accpet就报错
void   CWSocketServerDlg::OnBnClickedButton1()
{
//   TODO:   在此添加控件通知处理程序代码
        CSocket*   serversocket=new   CSocket();
if(!(serversocket-> Create(6000)))
{
MessageBox( "端口创建失败 ");
}
if(serversocket-> Listen())
{
AfxBeginThread(BeginReceive,(LPVOID)serversocket);
}
}

UINT   CWSocketServerDlg::BeginReceive(LPVOID   pParam)
{
      CSocket*   serversocket=(CSocket   *)pParam;
      CSocket*   acceptsocket=new   CSocket();
      CString   str1;
      char   buf[20];
      serversocket-> Accept(*acceptsocket);
      while(1)     //持续性线程函数里总会看到
      {
      acceptsocket-> Receive(buf,20,0);
      str1=buf;
      ........
          }
      return   0;
}

问题1.是执行到serversocket-> Accept(*acceptsocket);就非法操作退出
        2.new   完是不是一定要delete

------解决方案--------------------
serversocket-> Listen(1)

new了一定要delete