Jat*_*tin 2 c++ linux segmentation-fault
执行时此代码显示预期输出,但最后打印segmentation fault (core dumped):
string str[4] = {
"Home",
"Office",
"Table",
"Bar"
};
for (int i = 0; i<5; i++)
{
cout << str[i] << "\n";
}
Run Code Online (Sandbox Code Playgroud)
输出:
Home
Office
Table
Bar
Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)
分段错误(核心转储)的重要性是什么?我搜索了,当你试图访问未分配的内存时,似乎发生了这样的错误,所以,上面的代码出了什么问题?
你应该写:
for (int i = 0; i<4; i++) //0,1,2,3 = total 4 values
{
cout << str[i] << "\n";
}
Run Code Online (Sandbox Code Playgroud)
C++数组是基于0的,所以你不能访问str [4],因为它的索引范围是0-3.
你分配了一个数组,长度为4:
string str[4]
Run Code Online (Sandbox Code Playgroud)
然后你的循环必须终止:
i < 4
Run Code Online (Sandbox Code Playgroud)
而不是i < 5.