Я считаю, что вы действительно переполняете стек. Есть несколько способов исправить это, но самые простые из них - либо сделать это static
, либо переместить его за пределы вашей функции main
.
static int A[480][640];
Делая это статический, вы в основном делает его использовать сегмент данных памяти, в отличие от стека (и перелива его в этом случае из-за большого выделения). На изображении ниже это будет в «инициализированных данных», где также хранятся глобальные переменные (причина, по которой работает второй вариант), за пределами стека/кучи.
или
int A[480][640];
int main(int, char **) {
//....
}
Сообщите свой код и его содержимое – Paddyd
Если вы уменьшите размер своего двойного массива, чтобы сказать 'int A [50] [50]', вы все еще получаете ошибку? Вероятно, вы переполняете стек большим массивом. – Tricky12
Нет, если я поставил несколько меньших чисел, я не получу эту ошибку. Даже с int A [500] [500] отлично работает. Но мне нужно разрешение 640x480. – Meteory