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