Большие массивы локальных переменных работают в Linux, но не в Windows

Программа включает в себя два больших массива функции (main):

int array [1000][1000];
char anotherArray [1000][1000];

В Linux это работает отлично, но в Windows программа падает, если эти массивы не перемещаются в глобальную область.

Кажется, это проблема конкретной ОС, в чем ее причина?

Изменить: этот вопрос касается различий между обеими ОС.

Отвечать

(поскольку вопрос помечен как повторяющийся, я не могу ответить на него напрямую)

Причина в том, что стек используется для локальных переменных (как объяснено в других ответах на переполнение стека); в Windows его размер составляет 1 МБ, но в Linux по умолчанию он равен 8 МБ, поэтому доступно больше места.


person simplegamer    schedule 26.03.2019    source источник
comment
Размер стека зависит от ОС и мал по сравнению с размером, доступным для глобальных переменных и динамически выделяемой памяти.   -  person R Sahu    schedule 26.03.2019
comment
Было бы лучше, если бы вы разместили свой раздел ответ на другой вопрос, сказав, что число другое и что, например, это приводит к сбою в Windows, когда только этого достаточно для ядра Linux yadayada   -  person Antti Haapala    schedule 26.03.2019