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