问题描述
本人是某计算机专业大学生,近期在用VS做大作业的时候,突然发现使用Release模式编译下的exe文件双击闪退。我在网上查了各种方法,也修改了相应的设置,但是仍然不管用。
解决方法
后来猛然想起自己的大作业使用了ifstream进行文件读入,待读取的txt与cpp文件放在了同一目录下,因此使用了相对地址!也正是因为如此,所以在VS调试的时候并没有报错,而自己在代码中又没有对文件打开失败进行报错提示,导致浪费很多时间。真是吐了都。
修改办法为:将待读取文件和exe文件放在同一文件夹下即可。
总结
如果你写的C++程序编译生成的exe文件打不开,可以有以下解决办法:
1.在main函数return 0前加上system(“pause”)(理论上需要<Windows.h>头文件,但VS2019貌似不需要)
2.修改相应设置(这个网上很多,不做赘述,其实我自己也没记住太多改法 )
3.考虑有没有可能是程序运行错误导致的闪退。例如上例,文件读入失败会直接退出程序。
此外,如果你使用ifstream进行文件读入,强烈建议判断文件是否成功打开,我的习惯写法是:
const char* path="in.txt";
ifstream In(path);
if(In.is_open()){
...//你的操作
}
else{
cerr<<"文件打开失败!"<<endl;
exit(-1);
}
In.close();
对于动态内存的申请,也可以参考上述写法。或者使用高级的try-catch写法。(但是我太菜了我不会 )
希望以后自己能多思考多注意细节吧,也希望各位少踩类似的坑。