异步通信时函数是将提供的缓冲拷入临时缓冲还是将缓冲指针加入链?

解决方案 »

  1.   


    PCHAR pBuf=malloc(LEN);
    LPOVERLAPPED pOv=malloc(OVERLAPPED);
    Sendto(...pOv);//发送一次
    free(pOv);
    free(pBuf);假设异步Sendto尚未及时将数据发出,而我在此时已经销毁所提供的LPOVERLAPPED结构.
    请问,此时是否会出错?
      

  2.   

    重改下问题,把free(pOv);这句去掉,
    假如已保持Overlapped结构不被破坏.
    是否会出错?
      

  3.   

    你这么个写法,十有八九要出错。异步操作的free要写在WSAGetOverlappedResult或GetQueuedCompletionStatus 里,如果发送成功,才释放堆。