std :: vector resize vs reserve durante fread

Este é o meu código de trabalho:

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;
}

No entanto anterior eu tentei código que tinhaoutput.reserve(m_elementSize * m_blockSize);

Até onde seireserve apenas funda lugar na memória para o contêiner.resize faça o mesmo, também muda a memória do lixo para alguns valores e altera o tamanho do container.

fread primeiro parâmetro évoid * e é o mesmo queunsigned char *, minha pergunta, por que eu recebi exceção ao chamarfread.

Por que isso está acontecendo? Porquefread pega o ponteiro vazio e não grava na memória usandovector classe.

P.S. esqueci de mencionartypedef std::vector<unsigned char> ByteVector

questionAnswers(2)

yourAnswerToTheQuestion