Динамическое выделение памяти выделяет память на куче по мере необходимости во время выполнения, вместо того, чтобы выделить память статически на стеке. Можно использовать динамическое выделение памяти в массивах в блоке MATLAB Function.
Вы не можете использовать динамическое выделение памяти в:
Сигналы ввода и вывода. Сигналы ввода и вывода переменного размера должны иметь верхнюю границу.
Параметры или глобальные переменные. Параметры и глобальные переменные должны быть фиксированным размером.
Поля массивов шины A. Массивы шины A не могут иметь полей переменного размера.
Свойства дискретного состояния Системных объектов сопоставлены с блоком MATLAB System.
Динамическое выделение памяти выгодно когда:
Вы не знаете верхнюю границу массива.
Вы не хотите выделять память на стеке для больших массивов.
Динамическое выделение памяти и освобождение от этой памяти могут привести к более медленному выполнению сгенерированного кода. Чтобы управлять использованием динамического выделения памяти для массивов переменного размера в блоке MATLAB Function, вы можете:
Для неограниченного массива переменного размера генератор кода выделяет память динамически на куче. Для ограниченного массива переменного размера, если размер, в байтах, меньше порога динамического выделения памяти, генератор кода выделяет память статически на стеке. Чтобы избежать динамического выделения памяти, обеспечьте верхние границы для измерений массива так, чтобы размер массива, в байтах, был меньше порога динамического выделения памяти. Смотрите Задают Верхние границы для Массивов Переменного Размера (Simulink).
По умолчанию динамическое выделение памяти для блоков MATLAB Function включено для основанных на GRT целей и отключено для основанных на ERT целей. Изменить настройки, в диалоговом окне Configuration Parameters, ясном или выбрать Dynamic memory allocation in MATLAB functions.
Если вы отключаете динамическое выделение памяти, необходимо обеспечить верхние границы для массивов переменного размера.
Вместо того, чтобы отключить динамическое выделение памяти для всех массивов переменного размера, можно использовать порог динамического выделения памяти, чтобы задать, когда генератор кода использует динамическое выделение памяти.
Используйте порог динамического выделения памяти для:
Отключите динамическое выделение памяти для меньших массивов. Для меньших массивов выделение статического ЗУ может ускорить сгенерированный код. Однако выделение статического ЗУ может привести к неиспользованному пространству памяти. Можно решить, что неиспользованное пространство памяти не является значительным фактором для меньших массивов.
Включите динамическое выделение памяти для больших массивов. Для больших массивов, когда вы используете динамическое выделение памяти, можно значительно уменьшать требования устройства хранения данных.
Значение по умолчанию порога динамического выделения памяти составляет 64 килобайта. Чтобы изменить порог, в диалоговом окне Configuration Parameters, устанавливают параметр Dynamic memory allocation threshold in MATLAB functions.
Чтобы использовать динамическое выделение памяти во всех массивах переменного размера, установите порог к 0
.