我目前正在通過hackerrank上的斐波那契實踐問題,並且出現malloc內存損壞錯誤。這是鏈接到我做的問題:C++ malloc():內存損壞
https://www.hackerrank.com/contests/programming-interview-questions/challenges/fibonacci-returns/
輸入爲0-10,由一個新行分隔每個號碼。 對於每個輸入,打印序列中該點處的值。它適用於小輸入,但是在6之後它得到malloc錯誤。序列的大小似乎並不是一個問題,只是有多少是連續完成的。
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
vector<int> bigFib(1);
int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
int x;
while(cin >> x){
if(bigFib.size()-1 >= x){
cout << bigFib[x] << endl;
}
else{
vector<int> fib(x);
fib[0] = 0;
fib[1] = 1;
for(int j = 2; j <= x; j++){
fib[j] = fib[j-1] + fib[j-2];
}
bigFib = fib;
cout << fib[x] << endl;
}
}
return 0;
}
我對C++來說很新,並且找不到問題。謝謝你的時間。
你可能會寫內存,你的邊界。 –
解決此類問題的正確工具是您的調試器。在*堆棧溢出問題之前,您應該逐行執行您的代碼。如需更多幫助,請閱讀[如何調試小程序(由Eric Lippert撰寫)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。至少,您應該\編輯您的問題,以包含一個[最小,完整和可驗證](http://stackoverflow.com/help/mcve)示例,該示例再現了您的問題,以及您在調試器。 –
'vector fib(x)'分配索引爲'0..x-1'的'x'元素的向量。你的循環終止條件是'j <= x''這意味着一旦你嘗試做'fib [x]' –