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