Размер стека потока
Каждый новый поток получает свое собственное пространство стека, состоящее, и из виртуальной памяти в файле подкачки, и зарезервированной памяти. Система помещает одностраничные блоки из зарезервированной памяти стека, как требуется, до тех пор, пока стек не сможет больше расти.
Заданный по умолчанию размер для переданной и зарезервированной памяти устанавливается в заголовке исполняемого файла. Заданная по умолчанию зарезервированная память равна одному мегабайту. Чтобы установить другой заданный по умолчанию размер стека, используйте инструкцию
STACKSIZE в файле определения модуля (.DEF). Ваш компоновщик может также поддерживать параметр командной строки для установки размера стека. Для получения дополнительной информации, см. документацию, включенную в ваш компоновщик.Потоки, которые вызывают библиотеки языка C периода исполнения или Windows API, должны обеспечит достаточное место в стеке для использования этих функций. Не уменьшайте зарезервированный размер стека ниже 64 килобайт.
Чтобы увеличить объем свободного пространства стека, которое должно передаваться вначале для потока, установите значение в параметре
dwStackSize функции CreateThread или CreateRemoteThread. Это значение округляется до ближайшей страницы. Вызов, который создает поток, завершается ошибкой, если нет достаточно памяти, чтобы передать на хранение или зарезервировать количество требуемых байтов. Если параметр dwStackSize меньше чем заданный по умолчанию резервный размер, новый поток использует заданный по умолчанию резервный размер. Если параметр dwStackSize больше чем заданный по умолчанию резервный размер, резервный размер округляется до ближайшего числа кратного 1 Мбайту.Windows XP: Если параметр
dwCreationFlags функции CreateThread или CreateRemoteThread - STACK_SIZE_PARAM_IS_A_RESERVATION, параметр dwStackSize устанавливает объем свободного пространства стека, которое должно быть вначале зарезервировано для потока.Стек освобождается, когда завершается работа потока.