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

d183d0b2d0b5d0bbd0b8d187d0b5d0bdd0b8d0b5 d180d0b0d0b7d0bcd0b5d180d0b0 d181d182d0b5d0bad0b0 d181d0b8 d181d0b8 статьи

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Оцените статью
Секреты программирования
Добавить комментарий