【发布时间】:2011-08-19 03:08:02
【问题描述】:
我想知道当我们尝试使用 getline() 函数从文件中读取一行时可能出现分段错误的场景
例如:
ifstream h("one.txt");
string s;
getline(h,s); //what assignment to 'h' can lead to segmentaion fault here (or)
//is it possible to get the segmentation fault based on the content of the file?
我需要这个答案
【问题讨论】:
-
在此之前运行的代码。并破坏了堆。
-
正如 Hans 所说,几乎可以肯定是堆损坏。 getline 为 ifstream 读取缓冲区分配内存并为字符串分配内存,因此如果堆损坏,它将出现段错误。
-
“会出现段错误”。不会。它会出现段错误如果你很幸运。正确的短语是“如果堆损坏了,你有 UB 并且任何事情都可能发生”。
-
您是否看到此代码产生了段错误,或者您是否在询问可能发生这种情况的假设情况?