Ich bin derzeit durch ein Fibonacci-Praxis-Problem auf hackerrank und habe einen Malloc-Speicher Korruption Fehler. Dies ist der Link zu dem Problem, das ich tue:C++ malloc(): Speicher Korruption
https://www.hackerrank.com/contests/programming-interview-questions/challenges/fibonacci-returns/
Eingang 0-10, jede Nummer durch eine neue Zeile getrennt. Für jeden Eingang wird der Wert an diesem Punkt in der Sequenz gedruckt. Es funktioniert für kleine Eingaben, aber nach 6 erhält es den malloc Fehler. Es scheint auch nicht, dass die Größe der Sequenz ein Problem ist, sondern wie viele nacheinander ausgeführt werden.
#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;
}
Ich bin ziemlich neu in C++ und kann das Problem nicht finden. Vielen Dank für Ihre Zeit.
Du bist wahrscheinlich zu Erinnerung sein sollten schriftlich sein soll, die von Ihren Grenzen ist. –
Das richtige Werkzeug, um solche Probleme zu lösen, ist Ihr Debugger. Sie sollten Schritt für Schritt durch Ihren Code * gehen, bevor Sie auf Stack Overflow nachfragen. Für weitere Hilfe lesen Sie bitte [Wie kleine Programme zu debuggen (von Eric Lippert)] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). Zumindest sollten Sie Ihre Frage bearbeiten, um ein [minimales, vollständiges und verifizierbares] (http://stackoverflow.com/help/mcve) Beispiel einzufügen, das Ihr Problem zusammen mit den Beobachtungen, die Sie in der Debugger. –
'vector fib (x)' allokiert einen Vektor von 'x' Elementen indexiert' 0..x-1'. Ihre Bedingung für die Schleifenbeendigung ist 'j <= x ', was bedeutet, dass Sie einmal versuchen werden,' fib [x] ' –