你好我是一個業餘程序員,並且讓它變得更糟了,因爲我已經做了任何編程,所以我決定用一些簡單的Topcoder問題來刷新我的記憶。第一個我最終成爲一個細分問題,現在這超出了我自己的想法,誰能幫我理解細分問題的來源。這是代碼。此代碼中的分段錯誤在哪裏?
vector<int> Bonuses (vector<int> points)
{
int totalPoints = 0;
for (int i = 0; i != points.size(); ++i)
{
totalPoints += points[i];
}
vector<int> percentage;
int percentageLeft = 100;
int truncatedPercentage;
for (int i = 0; i != points.size(); ++i)
{
truncatedPercentage = points[i]/totalPoints;
percentage.push_back(truncatedPercentage);
percentageLeft -= truncatedPercentage;
}
for (int i = 1;i <= percentageLeft; ++i)
{
percentage[percentage.size() - i] += 1;
}
return percentage;
}
您違反內存訪問可能會超出數組限制。 – obo
你應該學會使用調試器[GDB](http://www.gnu.org/software/gdb/documentation/)。當發生崩潰時,像這種分段故障一樣,調試器將幫助您查明崩潰的位置,並讓您檢查變量以幫助您瞭解崩潰的原因。 –