Пока у меня есть этот пример кода:
...
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() дважды? Потому что невозможно получить данные в вектор, который не изменяется до нужного размера. Я думаю, что метод reserve() не выполняет выделение, согласно документации С++ STL. И еще один вопрос: использует ли этот метод безопасность утечки памяти?