Переменные Matlab демонстрируют «ссылочное» поведение при копировании и передаче в файл mex

У меня есть файл mex (скомпилированный в VS2010, Matlab 2010b), который принимает переменную и меняет ее. Например, в файле mex это выглядит так:

double *fp = (double *)mxGetPr (prhs[0]);
*fp = someDoubleValue;

Чтобы сравнить реализацию Matlab и реализацию mex, я делаю копию переменной перед вызовом файла mex:

var_mex = var;
mymex (var_mex);

К моему удивлению, обе var_mex и var изменяются (на то же значение, конечно), как если бы я создал ссылку на var , а не его копию.

Это известная проблема? Как я могу убедить Matlab скопировать переменную?

РЕДАКТИРОВАТЬ

Поскольку я подозревал, что эта проблема является результатом оптимизации управления памятью в Matlab, я сделал несколько вычислений "ничего не делать" для var раньше вызов файла mex, то есть

var=var+1;
var=var-1;

, и действительно решает проблему. Я все равно был бы рад получить некоторую информацию (или другие предложения) по этому поводу, если бы кто-то тоже с этим сталкивался.

6
задан Itamar Katz 24 January 2012 в 10:14
поделиться