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