По умолчанию локальные переменные выделяются на стеке. Большие переменные, которые не соответствуют на стеке, статически выделяются в памяти.
Сложите выделение, обычно использует память более эффективно, чем статическое выделение. Однако стековое пространство иногда ограничивается, обычно во встраиваемых процессорах. MATLAB® Coder™ позволяет вам вручную устанавливать предел для использования стекового пространства, чтобы сделать ваш сгенерированный код подходящим для вашего целевого компьютера. Можно выбрать этот предел на основе настроек целевого компьютера. Для получения дополнительной информации смотрите Использование Стекового пространства Управления.
Для ограниченного стекового пространства можно принять решение выделить большие переменные на куче вместо того, чтобы использовать статическое выделение. Выделение кучи медленнее, но более эффективно памятью, чем статическое выделение. Чтобы выделить большие переменные на куче, выполнить одно из следующих действий:
Создайте объект настройки. Установите свойство, MultiInstanceCode
, к true
.
cfg = coder.config('exe');
cfg.MultiInstanceCode = true;
Сгенерируйте код с помощью этого объекта настройки.
Используя приложение MATLAB Coder, в диалоговом окне настроек проекта, на вкладке Memory, устанавливают флажок Generate re-entrant code.
Сгенерируйте код.
Управляйте использованием стекового пространства | Сгенерируйте повторно используемый код С из кода MATLAB