执行时此代码显示预期输出,但最后打印segmentation fault (core dumped)
:
string str[4] = {
"Home",
"Office",
"Table",
"Bar"
};
for (int i = 0; i<5; i++)
{
cout << str[i] << "\n";
}
输出:
Home
Office
Table
Bar
Segmentation fault (core dumped)
分段错误(核心转储)的重要性是什么?我搜索过,当你试图访问未分配的内存时,似乎发生了这样的错误,所以,上面的代码出了什么问题?
答案 0 :(得分:8)
你应该写:
for (int i = 0; i<4; i++) //0,1,2,3 = total 4 values
{
cout << str[i] << "\n";
}
答案 1 :(得分:5)
C ++数组是基于0的,所以你不能访问str [4],因为它的索引范围是0-3 你分配了一个数组,长度为4:
string str[4]
然后你的循环必须在以下时间终止:
i < 4
而不是i < 5
。
答案 2 :(得分:3)
计数器应该从零到三。对于循环需要修改。
答案 3 :(得分:3)
str
是string[4]
,因此它有4个元素,这意味着索引0-3有效。您还访问索引4.
答案 4 :(得分:2)
您正在尝试访问不存在的元素,即str[4]
,因此会出现细分错误
可能的指数是0-3。
答案 5 :(得分:1)
您正在访问数组末尾的数据。 str
是一个大小为4的数组,但是你正在访问循环中的第五个元素,这就是你得到seg错误的原因