Увеличение размера стека (Си, Си++)

Вчера я написал программу, в которой реализовал алгоритм сортировки методом Хоара (быстрая сортировка). Сам алгоритм я сейчас описывать не буду (кому интересно, ссылка на Википедию). Скажу только одно, что в этом алгоритме используется рекурсия. К чему я веду? К тому, что при тестировании сортировки массива, размер которого достаточно велик (порядком 30 тысяч элементов), программа зависала в связи с тем, что не хватало памяти в стеке. В результате этого я получал такое уведомление:

Увеличение размера стека (Си, Си++) (C, Полезно)

Изменение размера стека

Мне нужно было сделать тесты этой сортировки на еще более больших массивах (100 тысяч элементов), поэтому я стал искать выход из сложившейся ситуации, а именно способ по увеличению размера стека. Спустя некоторое время, решение было найдено.

В самом начале программы (я писал после подключения всех заголовочных файлов) необходимо вписать следующую строку:

#pragma comment(linker, "/STACK:10000000000")

Данной строкой мы сообщаем компоновщику, что хотим изменить размер стека. Число после слова STACK выбирайте по своему усмотрению. Однако не следует ставить слишком маленькое или большое значение. При указании большого значения, у меня программа просто не выполнялась, но все-таки запускалась.

Увеличение размера стека (Си, Си++) (C, Полезно)

А вот когда я поставил вообще запредельное значение (в числе было более двадцати нулей), то она перестала даже компилироваться.

Увеличение размера стека (Си, Си++) (C, Полезно)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *