Распределение стека и эффективность

По умолчанию локальные переменные выделяются в стеке. Большие переменные, которые не помещаются в стеке, статически выделяются в памяти.

Выделение стека обычно использует память более эффективно, чем статическое выделение. Однако пространство стека иногда ограничено, как правило, во встраиваемых процессорах. MATLAB® Coder™ позволяет вам вручную задать предел на использование стека пространства, чтобы сделать сгенерированный код подходящим для вашего целевого оборудования. Вы можете выбрать этот предел на основе целевого компьютера строений. Для получения дополнительной информации см. Раздел «Использование пространства стека управления».

Для ограниченного пространства стека можно выбрать выделение больших переменных на куче вместо использования статического распределения. Выделение кучки происходит медленнее, но более эффективно с точки зрения памяти, чем статическое выделение. Чтобы выделить большие переменные на куче, выполните одно из следующих действий:

Выделите пространство кучки из командной строки

  1. Создайте объект строения. Установите свойство, MultiInstanceCode, в true.

    cfg = coder.config('exe');
    cfg.MultiInstanceCode = true;

  2. Сгенерируйте код с помощью этого объекта строения.

Выделите пространство кучки с помощью приложения MATLAB Coder

  1. Используя приложение MATLAB Coder, в диалоговом окне настроек проекта на вкладке Memory установите флажок Generate re-entrant code.

  • Сгенерируйте код.

См. также

|