std :: vector resize vs reserve durante fread
Este es mi código de trabajo:
size_t FileReader::Read(ByteVector& output)
{
output.resize(m_elementSize * m_blockSize);
size_t read = fread(&output[0], m_elementSize, m_blockSize, m_file);
output.resize(read);
return read;
}
Sin embargo anterior he intentado código que teníaoutput.reserve(m_elementSize * m_blockSize);
Por lo que séreserve
Solo encuentra lugar en memoria para contenedor.resize
haga lo mismo, también cambia la memoria de la papelera a algunos valores dados y cambia el tamaño del contenedor.
fread
primer parámetro esvoid *
y es lo mismo queunsigned char *
, mi pregunta, ¿por qué tuve una excepción al llamarfread
.
¿Por qué está sucediendo? Porquefread
toma el puntero del vacío y no escribe en la memoria usandovector
clase.
PD olvide mencionartypedef std::vector<unsigned char> ByteVector