抛出段错误我没有头绪为什么这个函数输出Segmentation fault
时n >= 128
双端队列后128次迭代
显然,这应该处理long long n
输出第一n
斐波那契数之和的最后一位。
我不问一个解决方案,我知道有替代品!
我想知道的是为什么Segfault?我错过了什么吗?这是我第一次处理deque
btw。
#include <iostream>
#include <deque>
using namespace std;
int fibonacci_sum_deque(long long n) {
if (n <= 2)
return n;
deque<int> sum(4);
sum[0] = 0;
sum[1] = 1;
sum[2] = 2;
for (long long i = 3; i <= n; ++i) {
sum[3] = (sum[2] + sum[1] + 1) % 10;
sum.pop_front();
}
return sum[2];
}
int main() {
long long n = 0;
cin >> n;
cout << fibonacci_sum_deque(n);
}
GDB输出:
Program received signal SIGSEGV, Segmentation fault.
0x0000000000401861 in fibonacci_sum_deque(long long)()
(gdb) where
#0 0x0000000000401861 in fibonacci_sum_deque(long long)()
#1 0x000000000040342d in main()
下的valgrind运行,如果你是在Linux上 – pm100
您初始化双端队列4种元素和流行'正2'元素关闭 – Kevin
@Kevin对不起,我什么时候弹出第二个元素?我每次迭代都会弹出'n-1'元素。它可以很好地从'0'运行到'127' –