簡體   English   中英

C ++中的分段錯誤(核心已轉儲)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM