高手帮忙看一下吧,
char*   recvBuffer=(char*)malloc(1024);
memset(recvBuffer,'\0',1024);
WSABUF WSArecvBuffer,WSASendBuffer;
WSArecvBuffer.len=1024;
WSArecvBuffer.buf=recvBuffer;
DWORD received=0,sendbyte=0,*Flags=(DWORD*)malloc(sizeof(DWORD));
*Flags=0;
CString temp;
temp.Format(L"CONNECT %s:%s HTTP/1.1\r\n\r\n",L"210.72.225.20",L"80");
char* xxx=(char*)malloc(temp.GetLength());
size_t ii;
wcstombs_s(&ii,xxx,(size_t)1024,temp.GetBuffer(temp.GetLength()),(size_t)1024);temp.ReleaseBuffer();
WSASendBuffer.len=sizeof(xxx);
WSASendBuffer.buf=xxx;
int iiii=WSASend(m_socket,&WSASendBuffer,1,&sendbyte,*Flags,0,0);
int j=WSARecv(m_socket,&WSArecvBuffer,1,&received,Flags,NULL,NULL);//到这边就执行不下去了,提示内存不足
int WSARecvError=WSAGetLastError();
WSASend是没有问题的,为什么WSARecv这么难搞定啊!

解决方案 »

  1.   

    memset(recvBuffer,0,1024); 
      

  2.   

    memset(recvBuffer,0,1024); 
    试过了,没有用
      

  3.   

    没人帮忙吗?
    出错位置:dbgheap.c
                        if (pHead == NULL)
                        {
                            *errno_tmp = ENOMEM;
                            RTCCALLBACK(_RTC_FuncCheckSet_hook,(1));
                        }
    其中errno_tmp的值为0x00000000
      

  4.   

    WSARecv有错吗?我这里没问题啊,倒是你的WSASend有点问题.这一句也有问题WSASendBuffer.len=sizeof(xxx);
      

  5.   

    能执行到这一句int WSARecvError=WSAGetLastError(); 吗?这里报什么错,WSARecvError是多少
      

  6.   

    楼上说的对啊,xxx是char*的指针。你sizeof后只能是4字节。应该是strlen(xxx);
    WSARecv写法上应该没有错
      

  7.   

    谢谢LS两位,现在已经搞定了。
    但是还有一点疑惑,为什么WSASend有问题,却在WSARecv的地方报错?