Выделение управляющей памяти для массивов Переменного Размера

Динамическое выделение памяти выделяет память на куче по мере необходимости во время выполнения, вместо того, чтобы выделить память статически на стеке. Динамическое выделение памяти выгодно когда:

  • Вы не знаете верхнюю границу массива.

  • Вы не хотите выделять память на стеке для больших массивов.

Динамическое выделение памяти и освобождение от этой памяти могут привести к более медленному выполнению сгенерированного кода. Чтобы управлять использованием динамического выделения памяти для массивов переменного размера, вы можете:

Обеспечьте верхние границы для массивов Переменного Размера

Для неограниченного массива переменного размера генератор кода выделяет память динамически на куче. Для массива переменного размера с верхней границей, размер которой, в байтах, меньше порога динамического выделения памяти, генератор кода выделяет память статически на стеке. Предотвратить динамическое выделение памяти:

  1. Задайте верхние границы для массива переменного размера. Смотрите Задают Верхние границы для Массивов Переменного Размера.

  2. Убедитесь, что размер массива, в байтах, меньше порога динамического выделения памяти. Смотрите Конфигурируют Генератор кода, чтобы Использовать Динамическое выделение памяти в Массивах, Больше, Чем Порог.

Отключите динамическое выделение памяти

По умолчанию динамическое выделение памяти включено. Чтобы отключить его, в объекте настройки для ускорения фиксированной точки, устанавливают DynamicMemoryAllocation параметр к 'Off'.

Если вы отключаете динамическое выделение памяти, необходимо обеспечить верхние границы для массивов переменного размера.

Сконфигурируйте генератор кода, чтобы использовать динамическое выделение памяти в массивах, больше, чем порог

Вместо того, чтобы отключить динамическое выделение памяти для всех массивов переменного размера, можно задать, для которого размер выстраивает динамическое выделение памяти использования генератора кода.

Используйте порог динамического выделения памяти для:

  • Отключите динамическое выделение памяти для меньших массивов. Для меньших массивов выделение статического ЗУ может ускорить сгенерированный код. Однако выделение статического ЗУ может привести к неиспользованному пространству памяти. Можно решить, что неиспользованное пространство памяти не является значительным фактором для меньших массивов.

  • Включите динамическое выделение памяти для больших массивов. Для больших массивов, когда вы используете динамическое выделение памяти, можно значительно уменьшать требования устройства хранения данных.

Порог динамического выделения памяти по умолчанию составляет 64 килобайта. Чтобы изменить порог, в объекте настройки для ускорения фиксированной точки, устанавливают DynamicMemoryAllocationThreshold.

Чтобы дать генератору кода команду использовать динамическое выделение памяти в массивах переменного размера, размер которых больше или равен порогу в объекте настройки, устанавливает DynamicMemoryAllocationThreshold к 'Threshold'.

Похожие темы