c++ - 遍历向量缓冲区时的 C++ 非法操作
问题描述
所以我正在编写这个程序来搜索二进制文件中的某个块,我得到了这个我不明白的错误。
这是生成错误的函数的代码
(另请注意,返回值是一个int,因为我希望它首先将大小作为字节返回,看看它是否有效)
int GetChunkBuffer(ifstream &imageFile, char chunkName[4])
{
//contains the newly opened image as a whole
vector<unsigned char> imageBuffer(istreambuf_iterator<char>(imageFile), {});
//pointer "array" type of thing
vector<unsigned char>::iterator bufferIterator = imageBuffer.begin();
for(; bufferIterator != imageBuffer.end(); bufferIterator++)
{
if(*bufferIterator == chunkName[0])
{
//i think this makes the program faster
if(*(bufferIterator + 1) == chunkName[1] &&
*(bufferIterator + 2) == chunkName[2] &&
*(bufferIterator + 3) == chunkName[3])
{
//chunk name matches
//get length of chunk
unsigned char len[4] = { *(bufferIterator - 4),
*(bufferIterator - 3),
*(bufferIterator - 2),
*(bufferIterator - 1)
};
unsigned int chunkLength = 0;
for(int i = 0; i <= 4; i++)
{
chunkLength += len[i] << 1;
}
return chunkLength;
}
}
}
}
我打开的文件是 PNG,不确定这是否有任何区别。提前谢谢你的帮助。
解决方案
推荐阅读
- django - Web 框架能做到这一切吗?
- ios - swift中DidSet的目的是什么?
- spring - Noarg 构造函数没有被创建
- python - 我想使用 python 写入 sep='\s+' 的 .dat 文件
- java - 我需要帮助打印出程序中最大绝对差异的价格。(我快完成了。)
- javascript - 选择列并在 amcharts 中突出显示它们
- node.js - 选项远程 mongodb 的键值对不完整
- vaadin8 - 当 TextField 中的文本未完全显示时附加省略号,Vaadin 8 和 10
- react-native - React Navigation如何从堆栈导航内部隐藏标签栏
- c - 如何用 rand 函数填充数组?