Я должен потерять рассудок здесь. Я получаю segfault на линии for(i = 0; i < N; i++) {
. Я никогда не встречал ничего подобного. Вот полный код:Segfault при инициализации простого цикла для цикла
#include <stdio.h>
#include <time.h>
#define N 2400
#define M 2000
#define P 500
int main() {
int a[N][N];
int b[N][N];
int c[N][N];
int i, j;
// Initialize matrix A
for(i = 0; i < N; i++) {
for(j = 0; j < M; j++) {
a[i][j] = j-1+2;
}
}
// Initialize matrix B
for(i = 0; i < M; i++) {
for(j = 0; j < P; j++) {
b[i][j] = i-j+1;
}
}
}
Большинство компиляторов помещают локальные переменные, включая полные массивы, в стек. Объем стека ограничен, в Windows стековое пространство по умолчанию - всего один мегабайт. Ваши массивы 'a',' b' и 'c' равны 21 МБ, * каждый *. –
... поэтому вы должны использовать 'malloc()' или 'calloc()' для выделения памяти [в куче] (https://en.wikipedia.org/wiki/C_dynamic_memory_allocation) для этих массивов. Или просто уменьшите количество элементов, чтобы вписаться в стек. –
Фактически вы получаете его в 'int a [N] [N];' – ThunderWiring