Более элегантный способ использования recv () и vector

Пока что у меня есть этот пример кода:

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

12
задан Hitman_99 19 November 2010 в 09:59
поделиться