Ошибка выполнения в C ++ 14 из-за объявления 2D-массива - PullRequest
0 голосов
/ 05 октября 2019

Можете ли вы сказать мне, почему я получаю ошибку во время выполнения?

#include <iostream>
#include <stdio.h>
#define lld long long int
#define size 10000
using namespace std;
static int matrix[size][size];

Ответы [ 2 ]

0 голосов
/ 05 октября 2019

Мы не можем создать массив с таким размером из-за ограничения размера памяти для двумерного массива. Решение:

vector<pair<int , int>> matrix;
0 голосов
/ 05 октября 2019

int matrix[size][size]; использует автоматическую память, которую вы просто исчерпали из-за элементов 10000 * 10000 в вашей матрице. Если вам нужна такая большая матрица, вы должны использовать динамическую память или контейнер, который использует динамическую память, например, std::vector:

vector<vector<int>> matrix(size, vector<int>(size, 0));
...