本帖最后由 VisualEleven 于 2014-02-28 14:32:38 编辑

解决方案 »

  1.   

    你写的是对的,不知道你哪里有问题:
    typedef struct {
        OVERLAPPED OVerlapped;
        WSABUF DATABuf;
        char Buffer[DATA_BUFSIZE];
        DWORD BytesSend;
        DWORD BytesRecv;
    } IO_DATA;IO_DATA PerIOData;
    ZeroMemory(&PerIOData.OVerlapped), sizeof(OVERLAPPED));IO_DATA *pPerIOData = new IO_DATA;
    ZeroMemory(&pPerIOData->OVerlapped), sizeof(OVERLAPPED));
    delete pPerIOData;
    你也可以定义宏:#define _sizeof(s, m) sizeof(((s *)0)->m)
    把 sizeof(OVERLAPPED) 改写为:_sizeof(IO_DATA, OVerlapped)