这是我的工作代码:
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;
}
但是以前我尝试过的代码output.reserve(m_elementSize * m_blockSize);
据我所知reserve
,只是在内存中为容器找到了位置。resize
做同样的事情,还将内存从垃圾更改为某些给定值并更改容器大小。
fread
第一个参数是void *
,它与unsigned char *
我的问题相同,为什么我在调用fread
.
为什么会这样?因为需要 void 指针并且它不使用类fread
写入内存。vector
PS忘了说typedef std::vector<unsigned char> ByteVector