编程基础有关问题 多线程内存溢出.

编程基础问题 多线程内存溢出...
编译时没问题,点击按钮就有内存溢出问题,请问各位大哥我该如何修改代码呢?
C/C++ code

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);
}



错误报告:
Detected memory leaks!
Dumping objects ->
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {155} normal block at 0x004BC8B0, 42 bytes long.
 Data: <, Y > 2C FB 91 59 0C 00 00 00 0C 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\thrdcore.cpp(306) : {149} client block at 0x004BC830, subtype c0, 68 bytes long.
a CWinThread object at $004BC830, 68 bytes long
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {140} normal block at 0x004BCDF0, 40 bytes long.
 Data: <, Y > 2C FB 91 59 0B 00 00 00 0B 00 00 00 01 00 00 00 
Object dump complete.
程序“[3892] iPower.exe: 本机”已退出,返回值为 3 (0x3)。


------解决方案--------------------
在线程中不能修改界面,要修改界面需要向主线程发消息来实现,
不能在线程中这样做:pDlg->m_neirong=inet_ntoa(from.sin_addr);
pDlg->UpdateData(FALSE);

------解决方案--------------------
发消息更新内容
------解决方案--------------------
线程退出有问题
没有用开关两退出,等于是强制退出,肯定有资源泄露问题
------解决方案--------------------
可以自定义消息..
发送一个消息后.
在消息处理函数里更新界面显示.