переполнение стека после увеличения резерва стека - PullRequest
2 голосов
/ 20 сентября 2011

У меня есть задание, в котором мне нужно в основном заполнить основную память выделенными массивами в C. Я использую VS2010 и продолжаю получать ошибки переполнения стека. Помогло увеличение резерва стека после его значения по умолчанию, равного 1 МБ, однако теперь размер массива, с которым я работаю, стал еще больше, и, кажется, независимо от того, насколько я увеличил резерв, теперь он постоянно дает мне ошибку переполнения стека. любая помощь будет оценена. -Спасибо

1 Ответ

3 голосов
/ 20 сентября 2011

Вы, вероятно, размещаете свои массивы в стеке. Вот почему вы получаете переполнение стека, поскольку ваш стек никогда не будет таким же большим, как вся ваша основная память.

Вам нужно использовать malloc() для создания массивов в куче. Это позволит вам использовать всю основную память.

Другими словами, вы не можете сделать это:

int array[1000000];

Это, безусловно, взорвет ваш стек. Вам нужно сделать это:

int *array = malloc(1000000 * sizeof(int));

и вам нужно в конце концов освободить его так:

free(array);

В противном случае вы получите утечка памяти .

...