【发布时间】:2012-07-25 14:16:44
【问题描述】:
我正在使用 std::vector 来表示每个 IO 数据结构中的缓冲区:
struct PerIoData
{
WSAOVERLAPPED m_overlapped;
SOCKET m_socket;
WSABUF m_wsaBuf;
std::vector<BYTE> m_vecBuffer;
DWORD m_dwFlags;
DWORD m_dwNumberOfBytesSent;
DWORD m_dwNumberOfBytesToSend;
eOperationType m_operationType;
};
...
...
if (WSARecv(pPerIoData->m_socket, &(pPerIoData->m_wsaBuf), 1, &dwNumberOfBytesReceived, &(pPerIoData->m_dwFlags), &(pPerIoData->m_overlapped), NULL) == 0)
continue;
我想在调用 WSARecv() 后指定最大大小并在 m_vecBuffer 上执行“缩小以适应”。
我查看了this page,但找不到我要查找的信息。
【问题讨论】:
-
那不需要内存释放吗?我尽量避免在网络服务器中出现这种情况。我使用普通数组,从不调整它们的大小。我不知道最大大小是多少,但它超过了256K。很可能是 32 位系统上的 4G,(好吧,实际上不太可能:)。
-
查看this answer。
-
@Littlegator-感谢您的链接!