現在、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)の例と、その問題を再現するためのデバッガ。 –
'ベクトル fib(x)'は '0..x-1'でインデックス付けされた' x'要素のベクトルを割り当てます。あなたのループ終了条件は 'j <= x'です。これは、' fib [x] 'をしようとすると –