Как увеличить размер стека visual studio
Перейти к содержимому

Как увеличить размер стека visual studio

  • автор:

/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

  1. Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.
  2. Перейдите на страницу свойств Свойства конфигурации>Компоновщик>Система.
  3. Измените одно из следующих свойств:
    • Размер фиксации стека
    • Размер резерва стека

Задание данного параметра компоновщика программным способом

  1. См. описание свойств StackCommitSize и StackReserveSize.

/F (Задать размер стека)

Без этого параметра размер стека по умолчанию по умолчанию — 1 МБ. Аргумент number может находиться в десятичной или C-языковой нотации. Аргумент может варьироваться от 1 до максимального размера стека, принятого компоновщиком. Компоновщик округляет указанное значение до ближайшего кратного 4 байта. Пространство между /F и number является необязательным.

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

Вы также можете задать размер стека следующими способами:

  • /STACK Использование параметра компоновщика. Дополнительные сведения см. в разделе /STACK (Выделение стека).
  • Использование EDI ТБ IN в ФАЙЛЕ EXE. Дополнительные сведения см. в справочнике по EDI ТБ IN.

Установка данного параметра компилятора в среде разработки Visual Studio

  1. Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.
  2. Перейдите на страницу свойств Свойства конфигурации>C/C++>Командная строка.
  3. Введите параметр компилятора в поле «Дополнительные параметры «.

Установка данного параметра компилятора программным способом

  • См. раздел AdditionalOptions.

/F (Задать размер стека)

Без этого параметра размер стека по умолчанию по умолчанию — 1 МБ. Аргумент number может находиться в десятичной или C-языковой нотации. Аргумент может варьироваться от 1 до максимального размера стека, принятого компоновщиком. Компоновщик округляет указанное значение до ближайшего кратного 4 байта. Пространство между /F и number является необязательным.

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

Вы также можете задать размер стека следующими способами:

  • /STACK Использование параметра компоновщика. Дополнительные сведения см. в разделе /STACK (Выделение стека).
  • Использование EDI ТБ IN в ФАЙЛЕ EXE. Дополнительные сведения см. в справочнике по EDI ТБ IN.

Установка данного параметра компилятора в среде разработки Visual Studio

  1. Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.
  2. Перейдите на страницу свойств Свойства конфигурации>C/C++>Командная строка.
  3. Введите параметр компилятора в поле «Дополнительные параметры «.

Установка данного параметра компилятора программным способом

  • См. раздел AdditionalOptions.

Как увеличить память под стек c# visual studio

Как я понимаю, речь идет об рекурсивный алгоритмах, так как в любых других ситуациях я не вижу способа словить ошибку переполнения стека.

Так вот, любой рекурсивный алгоритм можно переписать в виде циклов, используя программный стек( Stack ) и цикл. Соответственно, переписав алгоритм вы уйдете от этой ошибки.

Отслеживать
ответ дан 6 апр 2018 в 22:11
24.8k 13 13 золотых знаков 66 66 серебряных знаков 163 163 бронзовых знака

У меня просто есть программа ,про постройку дома,там очень много переменных типа bool и циклов,по идее все правильно но когда начал добавлять еще 12 циклов и несколько десятков переменных типа bool,программа накрылась)

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

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