[英]Segmentation Fault (Core dumped) in c++
該代碼在執行時顯示預期的輸出,但最后顯示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)
分段故障(核心轉儲)的意義何在? 我搜索了一下,當您嘗試訪問未分配的內存時似乎出現了這樣的錯誤,那么上述代碼有什么問題?
您應該寫:
for (int i = 0; i<4; i++) //0,1,2,3 = total 4 values
{
cout << str[i] << "\n";
}
C ++數組基於0,因此您無法訪問str [4],因為它的索引范圍是0-3。
您分配了一個數組,長度為4:
string str[4]
然后您的循環必須在以下情況下終止:
i < 4
而不是i < 5
。
計數器應從零到三。 For循環需要修改。
str
是一個string[4]
,所以它有4個元素,這意味着索引0-3是有效的。 您還正在訪問索引4。
由於您嘗試訪問不存在的元素(例如, str[4]
因此出現分段錯誤,可能的索引為0-3。
您正在訪問數組末尾的數據。 str
是一個大小為4的數組,但是您正在訪問循環中的第五個元素,這就是為什么出現段錯誤的原因
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.