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