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