使用2D-arrray。分段错误 - C ++

时间:2017-05-10 18:07:31

标签: c++ multidimensional-array

我在网上做运动,所以我遇到了一些问题。 我不知道代码中的问题在哪里。当我运行代码时,它会返回Segmentation fault! 我的代码如下:

#include <iostream>

using namespace std;


int main() {
    int n, q, buff;
    int k[100000], i[100000], j[100000], a[100000][300000];
    int c;



   cin >> n >> q;


    for(buff=0; buff<n; buff++) {
        cin >> k[buff];
        //array
        for(c = 0;c < k[buff]; c++) {
           cin >> a[buff][c];  // <-- I think problem is here!
       }
    }


    for(buff = 0; buff < q; buff++) {
        cin >> i[buff];
    }


    for(buff = 0; buff < q; buff++) {
        cin >> j[buff];
    }   


    return 0;
}

请帮帮我!抱歉我的英文。

2 个答案:

答案 0 :(得分:1)

在堆栈中使用如此大的数组会导致堆栈溢出。请参阅Getting a stack overflow exception when declaring a large array

改为使用std::vector<int> k{100000}; std::vector<int> i{100000}; std::vector<int> j{100000}; std::vector<std::vector<int>> a{100000, std::vector<int>{300000}};

public function destroy($id)
    {
        $post = Post::find($id);
        $post->delete();
        //redirect to
        return redirect()->back();
    }

答案 1 :(得分:0)

您正在尝试创建一个 30000000000整数的数组 考虑到64位系统, int = 4字节的大小,因此所需的总大小约为 120 GB ,这在系统堆栈中不可用。

这是堆栈溢出错误的原因。

解决方案,在这种情况下使用向量而不是数组。