Динамическое выделение памяти распределяет память в куче по мере необходимости во время выполнения, а не статически распределяет память в стеке. Динамическое выделение памяти полезно в следующих случаях:
Вы не знаете верхнюю границу массива.
Выделение памяти в стеке для больших массивов не требуется.
Динамическое выделение памяти и освобождение этой памяти может привести к более медленному выполнению сгенерированного кода. Для управления использованием динамического выделения памяти для массивов переменного размера можно:
Для неограниченного массива переменного размера генератор кода динамически выделяет память в куче. Для массива переменного размера с верхней границей, размер которого в байтах меньше порога динамического выделения памяти, генератор кода распределяет память статически в стеке. Чтобы предотвратить динамическое выделение памяти:
Укажите верхние границы для массива переменного размера. См. раздел Определение верхних границ для массивов переменного размера.
Убедитесь, что размер массива в байтах меньше порога динамического выделения памяти. См. раздел Настройка генератора кода для использования динамического выделения памяти для массивов, превышающих пороговое значение.
По умолчанию динамическое выделение памяти включено. Чтобы отключить его, в объекте конфигурации для ускорения с фиксированной точкой установите DynamicMemoryAllocation параметр для 'Off'.
Если динамическое выделение памяти отключено, необходимо предусмотреть верхние границы для массивов переменного размера.
Вместо отключения динамического выделения памяти для всех массивов переменного размера можно указать, для каких массивов размера генератор кода использует динамическое выделение памяти.
Используйте порог динамического выделения памяти для:
Отключите динамическое выделение памяти для небольших массивов. Для небольших массивов статическое выделение памяти может ускорить создание кода. Однако статическое выделение памяти может привести к неиспользуемому пространству памяти. Можно решить, что неиспользуемое пространство хранения не является важным фактором для небольших массивов.
Включите динамическое выделение памяти для больших массивов. Для больших массивов при использовании динамического выделения памяти можно значительно снизить требования к хранилищу.
Порог динамического выделения памяти по умолчанию составляет 64 килобайта. Чтобы изменить порог, в объекте конфигурации для ускорения с фиксированной точкой установите значение DynamicMemoryAllocationThreshold.
Чтобы дать генератору кода команду использовать динамическое выделение памяти для массивов переменного размера, размер которых больше или равен порогу, в объекте конфигурации установите DynamicMemoryAllocationThreshold кому 'Threshold'.