【发布时间】:2012-10-17 05:44:38
【问题描述】:
我不熟悉 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是在哪里/如何定义的,以及如何用值填充它吗? -
请展示更多代码(特别是所有相关类的声明),使用所有警告和调试信息进行编译(例如,Linux 上的
g++ -Wall -g)并学习使用调试器(Linux 上的gdb)。 -
可能是您缺少退货声明。这会导致未定义的行为,这肯定会崩溃。