我一直在研究一些編碼,我遇到了分段錯誤。我盡了最大的努力使其工作,但我一直在失敗。現在我正在尋求幫助。這是我的代碼:C++程序得到分段錯誤
#include <iostream>
#include <string>
using namespace std;
int main()
{
string symbols = "ABCDEFGHIJKLMNOPRSTUVYZ_";
int sim, a = 0;
sim = symbols.size();
string temp[sim];
while(sim > 0)
{
sim--;
temp[sim] = symbols.substr(sim, 1);
cout << temp[sim] << endl;
}
}
那麼這種有用,但如果我做了一些改變,它崩潰。
更改:
while(sim > 0)
{
sim--;
temp[sim] = symbols.substr(sim, 1);
cout << temp[sim] << endl;
}
要這樣:
while(a < sim)
{
a++;
temp[a] = symbols.substr(a, 1);
cout << temp[a] << endl;
}
我得到SIGFAULT,我真的不明白,是錯誤的。我用調試器,它並沒有真正顯示它崩潰的線路,它只是顯示這個:
程序接收到的信號SIGSEGV,分段錯誤。
在__gnu_cxx::__exchange_and_add(int volatile *, int)()()
你知道在程序中的哪一點崩潰? (第一次嘗試運行,最後等) – Daniel
只是爲了正確,它拼寫爲「segfault」。 「分段故障」的縮寫。 SIG什麼都有特定的含義 - 即它往往是一個常數,其值代表信號。在這種情況下,拼寫爲「SIGSEGV」。其中一個是合適的,但你應該選擇一個。 – cHao
cHao - >好的,我會在下一次... 感謝您的支持,我感動了一個++;到循環結束,它工作正常,謝謝你們:) – iCoRe