Динамическое выделение памяти выделяет память на куче по мере необходимости во время выполнения, вместо того, чтобы выделить память статически на стеке. Динамическое выделение памяти выгодно когда:
Вы не знаете верхнюю границу массива.
Вы не хотите выделять память на стеке для больших массивов.
Динамическое выделение памяти и освобождение от этой памяти могут привести к более медленному выполнению сгенерированного кода. Чтобы управлять использованием динамического выделения памяти для массивов переменного размера, вы можете:
Для неограниченного массива переменного размера генератор кода выделяет память динамически на куче. Для массива переменного размера с верхней границей, размер которой, в байтах, является меньше, чем порог динамического выделения памяти, генератор кода выделяет память статически на стеке. Предотвратить динамическое выделение памяти:
Задайте верхние границы для массива переменного размера. Смотрите Задают Верхние границы для Массивов Переменного Размера.
Убедитесь, что размер массива, в байтах, является меньше, чем порог динамического выделения памяти. Смотрите Конфигурируют Генератор кода, чтобы Использовать Динамическое выделение памяти для Массивов, Больше, Чем Порог.
По умолчанию динамическое выделение памяти включено. Отключить его:
В настройке возражают для генерации кода, установленной параметр DynamicMemoryAllocation
на 'Off'
.
В приложении MATLAB® Coder™, в настройках Memory, устанавливает Dynamic memory allocation на Never
.
Если вы отключаете динамическое выделение памяти, необходимо обеспечить верхние границы для массивов переменного размера.
Вместо того, чтобы отключить динамическое выделение памяти для всех массивов переменного размера, можно задать, для которого размер выстраивает динамическое выделение памяти использования генератора кода.
Используйте порог динамического выделения памяти для:
Отключите динамическое выделение памяти для меньших массивов. Для меньших массивов выделение статического ЗУ может ускорить сгенерированный код. Однако выделение статического ЗУ может привести к неиспользованному пространству памяти. Можно решить, что неиспользованное пространство памяти не является значительным фактором для меньших массивов.
Включите динамическое выделение памяти для больших массивов. Для больших массивов, когда вы используете динамическое выделение памяти, можно значительно уменьшать требования устройства хранения данных.
Порог динамического выделения памяти по умолчанию составляет 64 килобайта. Изменить порог:
В настройке возражают для генерации кода, набор DynamicMemoryAllocationThreshold
.
В приложении MATLAB Coder, в Memory settings, устанавливает Dynamic memory allocation threshold.
Чтобы дать генератору кода команду использовать динамическое выделение памяти для массивов переменного размера, размер которых больше, чем или равен порогу:
В объекте настройки, набор DynamicMemoryAllocationThreshold
к 'Threshold'
.
В приложении MATLAB Coder, в Memory settings, устанавливает Dynamic memory allocation threshold на For arrays with max size at or above threshold
.