所以我在这段代码中有一个奇怪的“无效的空指针”异常(切入问题的核心)
#include <fstream>
#include <iostream>
#include <iomanip>
int main(){
std::ifstream input;
std::ofstream output;
unsigned __int16 currentWord = 0;
output.open("log.txt");
input.open("D:\\Work\\REC022M0007.asf", std::ios::binary);
input.seekg(0, input.end);
int length = input.tellg();
input.seekg(0, input.beg);
for (int i = 0; i < length;){
int numData = 0;
input.read(reinterpret_cast<char *>(currentWord), sizeof(currentWord));
}
input.close();
output.close();
return 0;
}
使我异常的行是
input.read(reinterpret_cast<char *>(currentWord), sizeof(currentWord));
而且它是在第一个过程中这样做的,所以这不是我想要进一步读取文件。
当我尝试将
currentWord
的值更改为1时,出现异常trying to write to memory 0x0000001
或沿线模糊(零位数可能不正确)
网络搜索告诉我,这与文件为空(不是这种情况),找不到文件(由于长度获取值也不是这种情况)或类型转换为Mumbo-jumbo有关。有什么建议么?
最佳答案
“ currentWord”为零(0),当执行reinterpret_cast<char*>(currentWord)
时,它使其成为nullptr
,因此当您尝试写入空地址时,您将收到内存写保护错误。
将其更改为reinterpret_cast<char*>(¤tWord)
(注意&
)
关于c++ - 使用ifstream时无效的空指针错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33376774/