ifstream* 分段错误

ifstream* Segmentation fault

本文关键字:错误 分段 ifstream      更新时间:2023-10-16

我想在我的代码中使用类型 ifstream* 打开文件

ifstream* i;
(*i).open("test.txt");

它抛出了一个分段错误,我不知道为什么。 请帮我解决问题(用ifstream*打开文件)并告诉我为什么会出错。

在您的代码中,i是一个指针,它没有初始化,因此它指向的内存位置是不确定的。

接下来,您尝试在(*i).....中取消引用它,这将调用未定义的行为。

您需要先分配内存(即,使指针指向某个有效的内存位置),然后才能取消引用指针。

ifstream* i;

i是一个指针,但它不指向任何ifstream对象。因此存在分段错误。

像这样使用:

ifstream i;
i.open("test.txt");

否则,它将失败,因为指针指向无处,而不是指向有效对象。

或者,如果您仍然喜欢使用指针:

ifstream* i = new ifstream;
i->open("test.txt");
...
delete i;