Вы, вероятно, размещаете свои массивы в стеке. Вот почему вы получаете переполнение стека, поскольку ваш стек никогда не будет таким же большим, как вся ваша основная память.
Вам нужно использовать malloc()
для создания массивов в куче. Это позволит вам использовать всю основную память.
Другими словами, вы не можете сделать это:
int array[1000000];
Это, безусловно, взорвет ваш стек. Вам нужно сделать это:
int *array = malloc(1000000 * sizeof(int));
и вам нужно в конце концов освободить его так:
free(array);
В противном случае вы получите утечка памяти .