以下函数工作正常,将文本文件逐行显示到 stderr:
void load_text(std::string path){
ifstream f(path);
char linebuff[100];
linebuff[99] = 0;
while(!f.eof()){
f.getline(linebuff, 99);
std::cerr<<linebuff<<std::endl;
}
f.close();
}
现在,当 main 函数返回时,它会抛出以下访问冲突错误:
app.exe 中 0x77e58dc9 处的未处理异常:0xC0000005:访问冲突写入位置 0x00000014。
奇怪的是,创建一个 ifstream,关闭它并返回也会引发错误
//This also crashes when returning from main
void load_text(std::string path){
ifstream f(path);
f.close();
}
知道为什么会这样吗?
编辑:
主函数(编译时),如果你创建一个新项目,这实际上是有效的,与实际程序的区别是很多从未调用,从未使用过的函数和类
现在我处于“无法复制”阶段:
#include <fstream>
#include <string>
#include <iostream>
//Using SDL for plotting
#ifdef WIN32
#pragma comment(lib, "SDL")
#pragma comment(lib, "SDLMain")
#pragma comment(lib, "SDL_image")
#endif
int fn(std::string path){
std::ifstream f(path);
char linebuff[100];
linebuff[99] = 0;
while(!f.eof()){
f.getline(linebuff, 99);
std::cerr<<linebuff<<std::endl;
}
f.close();
return 0;
}
int main(int argc, char** argv){
fn("sscce.cpp");
return 0;
}