C++ 加载时程序崩溃

C++ 加载时程序崩溃,c++,C++,我在编译时没有错误,但我的程序在启动后就崩溃了 我的源代码: #include <iostream> #include <vector> std::vector<int> recursivite(std::vector<int> source, int index, int length); int main() { std::vector<int> myTab {{ 1, 2, 3, 4,

我在编译时没有错误,但我的程序在启动后就崩溃了

我的源代码:

#include <iostream>
#include <vector>

std::vector<int> recursivite(std::vector<int> source, int index, int length);
int main()
{
    std::vector<int> myTab  {{ 1, 2, 3, 4,
                                5, 6, 7, 8,
                                9, 10, 11, 12,
                                13, 14, 15, 16,
                                17, 18, 19, 20
                            }};

    std::vector<int> myTab2{{0, 0, 0, 0}};

    myTab2 = recursivite(myTab, 4, 4);

    for (unsigned int i{}; i < myTab2.size(); ++i)
        std::cout << myTab2[i];
}

std::vector<int> recursivite(std::vector<int> source, int index, int length)
{
    std::vector<int> myTab = {length};

    if (myTab.size() > 0)
    {
        myTab[length - 1] = source[index + length - 1];
        recursivite(source, index, length - 1);
    }

    return myTab;
}
#包括
#包括
std::vector recursivite(std::vector source,int索引,int长度);
int main()
{
向量myTab{{1,2,3,4,
5, 6, 7, 8,
9, 10, 11, 12,
13, 14, 15, 16,
17, 18, 19, 20
}};
std::向量myTab2{{0,0,0,0};
myTab2=递归(myTab,4,4);
for(无符号整数i{};i

有人能找出它崩溃的原因吗?

您的主要问题是,这一行可能无法完成您希望它完成的任务:

std::vector<int> myTab = {length};

使用大括号的版本从列出其元素的
std::initializer\u列表构建
std::vector
。使用括号的版本会创建指定大小的
std::vector

我猜这是堆栈溢出错误,您看到了吗?如果是,请检查
recursivite
函数的结束条件。就我所见,它将是一个无限递归。我可能错了。什么是
std::vector myTab={length}用于
length
是一个int。如果(myTab.size()>0)
将东西添加到
myTab
中,那么
什么时候会不正确呢?我想这里有一个
std::vector(args)
/
std::vector{args}
混合了。
unsigned int I{}
为什么?只是让人困惑。
std::vector<int> myTable(length);