/STACK (Выделение стека)
Параметр /STACK компоновщика задает размер стека в байтах. Этот параметр используется только при сборке .exe файла. Параметр /STACK игнорируется при применении к .dll файлам.
Значение reserve указывает общее выделение стека в виртуальной памяти. Для компьютеров ARM64, x86 и x64 размер стека по умолчанию составляет 1 МБ.
Значение commit подлежит интерпретации операционной системой. В WindowsRT он указывает объем физической памяти, выделяемой за раз. Зафиксированная виртуальная память приводит к зарезервированию места в файле разбиения на страницы. Более commit высокое значение экономит время, когда приложению требуется больше места в стеке, но увеличивает требования к памяти и, возможно, время запуска. Для компьютеров ARM64, x86 и x64 значение по умолчанию commit равно 4 КБ.
reserve Укажите и commit значения в десятичной или шестнадцатеричной нотации языка C (используйте 0x префикс).
Другим способом задать размер стека является STACKSIZE оператор в файле определения модуля ( .def ). STACKSIZE Переопределяет параметр выделения стека ( /STACK ) при указании обоих. Размер стека можно изменить после .exe создания файла с помощью EDITBIN средства.
Задание данного параметра компоновщика в среде разработки Visual Studio
- Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.
- Перейдите на страницу свойств Свойства конфигурации>Компоновщик>Система.
- Измените одно из следующих свойств:
- Размер фиксации стека
- Размер резерва стека
Задание данного параметра компоновщика программным способом
- См. описание свойств StackCommitSize и StackReserveSize.
/F (Задать размер стека)
Без этого параметра размер стека по умолчанию по умолчанию — 1 МБ. Аргумент number может находиться в десятичной или C-языковой нотации. Аргумент может варьироваться от 1 до максимального размера стека, принятого компоновщиком. Компоновщик округляет указанное значение до ближайшего кратного 4 байта. Пространство между /F и number является необязательным.
Возможно, потребуется увеличить размер стека, если программа получает сообщения стека переполнения во время выполнения.
Вы также можете задать размер стека следующими способами:
- /STACK Использование параметра компоновщика. Дополнительные сведения см. в разделе /STACK (Выделение стека).
- Использование EDI ТБ IN в ФАЙЛЕ EXE. Дополнительные сведения см. в справочнике по EDI ТБ IN.
Установка данного параметра компилятора в среде разработки Visual Studio
- Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.
- Перейдите на страницу свойств Свойства конфигурации>C/C++>Командная строка.
- Введите параметр компилятора в поле «Дополнительные параметры «.
Установка данного параметра компилятора программным способом
- См. раздел AdditionalOptions.
/F (Задать размер стека)
Без этого параметра размер стека по умолчанию по умолчанию — 1 МБ. Аргумент number может находиться в десятичной или C-языковой нотации. Аргумент может варьироваться от 1 до максимального размера стека, принятого компоновщиком. Компоновщик округляет указанное значение до ближайшего кратного 4 байта. Пространство между /F и number является необязательным.
Возможно, потребуется увеличить размер стека, если программа получает сообщения стека переполнения во время выполнения.
Вы также можете задать размер стека следующими способами:
- /STACK Использование параметра компоновщика. Дополнительные сведения см. в разделе /STACK (Выделение стека).
- Использование EDI ТБ IN в ФАЙЛЕ EXE. Дополнительные сведения см. в справочнике по EDI ТБ IN.
Установка данного параметра компилятора в среде разработки Visual Studio
- Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.
- Перейдите на страницу свойств Свойства конфигурации>C/C++>Командная строка.
- Введите параметр компилятора в поле «Дополнительные параметры «.
Установка данного параметра компилятора программным способом
- См. раздел AdditionalOptions.
Как увеличить память под стек c# visual studio
Как я понимаю, речь идет об рекурсивный алгоритмах, так как в любых других ситуациях я не вижу способа словить ошибку переполнения стека.
Так вот, любой рекурсивный алгоритм можно переписать в виде циклов, используя программный стек( Stack ) и цикл. Соответственно, переписав алгоритм вы уйдете от этой ошибки.
Отслеживать
ответ дан 6 апр 2018 в 22:11
24.8k 13 13 золотых знаков 66 66 серебряных знаков 163 163 бронзовых знака
У меня просто есть программа ,про постройку дома,там очень много переменных типа bool и циклов,по идее все правильно но когда начал добавлять еще 12 циклов и несколько десятков переменных типа bool,программа накрылась)