현재 hackerrank에서 fibonacci 연습 문제를 겪고 있으며 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++에 처음 소개되었으므로 문제를 찾을 수 없습니다. 시간 내 줘서 고마워.
cout << fib[x] << endl;
이 있어야 할 ...for(int j = 2; j <= x; j++){
아마for(int j = 2; j < x; j++){
해야한다 생각한다. –이러한 문제를 해결하는 올바른 도구는 디버거입니다. 스택 오버플로를 묻기 전에 코드를 단계별로 실행해야합니다. 자세한 도움말은 [작은 프로그램 디버깅 방법 (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]'를하려고하면 –