Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ ***“”:free()中出错:下一个大小无效(快速):0x0000000000667890***_C++ - Fatal编程技术网

C++ ***“”:free()中出错:下一个大小无效(快速):0x0000000000667890***

C++ ***“”:free()中出错:下一个大小无效(快速):0x0000000000667890***,c++,C++,这是我做的一个函数,它计算斐波那契数,但当我运行它时,我得到以下错误 “.”中的错误:空闲:无效的下一个快速大小:0x0000000000667890 有一个包含两个元素的向量。有效索引为0和1 在第一次迭代之后,您访问x[2],超过x[2]就超出了向量的边界。程序的行为未定义 您不需要将序列存储在向量中,因为您只返回最后一个值。您只需要存储最后两个值。您的向量x只有2个元素,但您的循环首先将i设置为2,然后在第一次迭代中执行x[i]aka x[2],这超出了范围,因为只有索引0和1有效。 请记

这是我做的一个函数,它计算斐波那契数,但当我运行它时,我得到以下错误

“.”中的错误:空闲:无效的下一个快速大小:0x0000000000667890

有一个包含两个元素的向量。有效索引为0和1

在第一次迭代之后,您访问x[2],超过x[2]就超出了向量的边界。程序的行为未定义

您不需要将序列存储在向量中,因为您只返回最后一个值。您只需要存储最后两个值。

您的向量x只有2个元素,但您的循环首先将i设置为2,然后在第一次迭代中执行x[i]aka x[2],这超出了范围,因为只有索引0和1有效。 请记住,数组索引在C++中以0开始。
访问越界是无效的,因此您的整个程序无效,编译器不需要生成任何合理的内容,也不必告诉您错误。

您的向量大小为2,索引为[2],即大小为3或更多,这是无效代码。你可能想把你推回去。。。新价值观
int fib(int n) {
int fibn=0;
std::vector<int> x{0,1};
for(int i = 2 ; i <= n ; i++)
{
    x[i]=x[i-2]+x[i-1]; 
}
fibn=x[n];
return fibn;
}
std::vector<int> x{0,1};
for(int i = 2 ; i <= n ; i++)
{
    x[i]=x[i-2]+x[i-1]; 
}