Я получаю переменную из своего рабочего пространства MATLAB через mexGetVariable
. Насколько я понимаю, при использовании mexGetVariable
делается копия переменной и возвращается ее указатель.
Должен ли я делать какое-либо выделение памяти для этой копии?
Нет, вам не нужно делать никакого распределения памяти вручную. Процедура mexGetVariable() выделит вам всю необходимую память в фоновом режиме. Статус этой переменной mxArray и связанной с ней памяти является «временным», что означает, что автоматическая сборка мусора, присущая всем подпрограммам mex, освободит память, как только подпрограмма mex вернет управление вызывающей стороне, если вы не сделали что-то, чтобы сделать ее постоянной (например, присвоить ей одной из переменных plhs[ ]). При этом хорошей практикой программирования является освобождение его вручную с помощью mxDestroyArray(), когда вы закончите с ним работать.
Если вы не намерены изменять переменную внутри своей подпрограммы mex, будет быстрее использовать вместо этого функцию mexGetVariablePtr(), что позволит избежать глубокого копирования данных.
Ты это пробовал? Кажется, достаточно легко проверить. Если вы не выделяете и он падает, вам нужно. Хотя я почти уверен, что вам это не нужно, это и есть «копия».