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

Respuestas a la pregunta(2)

Su respuesta a la pregunta