首页 > 解决方案 > 如何初始化一个很长的数组?

问题描述

我只是想初始化一个巨大的数组。我的代码如下:

#include<iostream>
using namespace std;

int main()
{
    int T;
    cin >> T;
    while (T--) 
    {
        int d;
        cin >> d;
        int arr[d + 1];
        for (int i = 0; i <= d; i++)
            arr[i] = 0;
    }
    return 0;
}

现在当我输入

1 502334160

然后我得到了错误Runtime Error - SIGSEGV

我想知道如何初始化这种类型的数组。

标签: c++arraysc++11initializationsegmentation-fault

解决方案


数组可能太大而无法放入程序的堆栈地址空间。如果你在堆上分配数组,你应该没问题。

int* arr = new int[d + 1];

但请记住,这将需要您进入delete[]数组。更好的解决方案是使用std::vector<int>并将其调整d + 1元素。


推荐阅读