我是C++的新手,需要編寫和調試語言的內存細微差別。誰能告訴我爲什麼下面的代碼給我一個分段錯誤?C++分段錯誤
string Polynomial::toString(){
int i, exponent;
stringstream result;
for (i = 0; i < coeffs.size(); i++){
// For first non-zero coefficient
if (result.str().empty()){
if(coeffs[i] < 0)
result << "-";
if(coeffs[i] != 0)
result << coeffs[i];
}
else{
if(coeffs[i] < 0)
result << " - " << abs(coeffs[i]);
else if(coeffs[i] > 0)
result << " + " << coeffs[i];
}
exponent = (coeffs.size() - i - 1);
if (coeffs[i] != 0){
if (exponent > 1)
result << coeffs[i] << "x^" << exponent;
else if(exponent == 1)
result << coeffs[i] << "x";
}
}
result.str();
}
你能告訴我們在哪兒/如何coeffs'定義',你怎麼用值來填充它? – SingerOfTheFall
請顯示更多的代碼(特別是所有相關類的聲明),編譯所有警告和調試信息(例如Linux上的'g ++ -Wall -g')並學習使用調試器(Linux上的'gdb')。 –
也許這是你缺乏回報聲明。這會導致未定義的行爲,這肯定會崩潰。 – chris