到目前为止,我有这个代码示例:
...
int nbytes =0;
vector<unsigned char> buffer;
buffer.resize(5000);
nbytes = recv(socket, &buffer[0], buffer.size(),0);
//since I want to use buffer.size() to know data length in buffer I do
...
buffer.resize(nbytes);
是否有另一种方式,在不使用 resize() 两次的情况下知道缓冲区中的数据长度?因为不可能将数据接收到未调整为适当大小的向量中。根据 C++ STL 文档,我认为 reserve() 方法不进行分配。还有一个问题:使用这种技术是内存泄漏安全的吗?