Когда вы генерируете повторно используемый код, MATLAB® Coder™ поддерживает динамическое выделение:
Функциональные переменные, которые являются слишком большими для стека
Персистентные переменные
Глобальные переменные
Это генерирует заголовочный файл, primary_function_name
_types.h
, который необходимо включать при использовании сгенерированного кода. Этот заголовочный файл содержит следующие структуры:
primary_function_name
StackData
Эта структура содержит выделенную пользователями память. Необходимо передать указатель на эту структуру как первый параметр ко всем функциям, которые используют его:
Непосредственно, потому что функция использует поле в структуре.
Косвенно, потому что функция передает структуру вызванной функции.
Если алгоритм использует персистентные или глобальные данные, структура StackData
primary_function_name
также содержит указатель на структуру PersistentData
primary_function_name
. Если вы включаете этот указатель, только необходимо передать один параметр каждой вызывающей функции.
primary_function_name
PersistentData
Если ваш алгоритм использует персистентные или глобальные переменные, MATLAB Coder предоставляет отдельную структуру им. Структура выделения памяти содержит указатель на эту структуру. Поскольку у вас есть отдельная структура для персистентных и глобальных переменных, можно выделить память для этих переменных однажды и совместно использовать их со всеми потоками. Однако, если нет никакой связи между потоками, можно выделить память для этих переменных на поток.
Для получения дополнительной информации об использовании этих глобальных структур смотрите Многопоточные Примеры.