这个错误表明正在尝试对一个NULL指针进行指针相加操作。
size_t ACompoundFile::WriteData(const char *data, size_t size, int startIndex, bool isBig) {
if (isBig) {
if (maxPresentBlocks != 0) {
for (; remainingFullBlocks && curIndex < maxPresentBlocks;
--remainingFullBlocks, ++curIndex) {
file_.Write(indices[curIndex] + 1, data + curIndex * header_.bigBlockSize_);
}
}
}
}
问题出现在file_.Write这行代码,需对data进行是否为空的判断,修改如下:
size_t ACompoundFile::WriteData(const char *data, size_t size, int startIndex, bool isBig) {
if (isBig) {
if (maxPresentBlocks != 0) {
for (; remainingFullBlocks && curIndex < maxPresentBlocks;
--remainingFullBlocks, ++curIndex) {
if (data)
file_.Write(indices[curIndex] + 1, data + curIndex * header_.bigBlockSize_);
}
}
}
}
再次编译,报错消失。