У меня есть файл 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;
, и действительно решает проблему. Я все равно был бы рад получить некоторую информацию (или другие предложения) по этому поводу, если бы кто-то тоже с этим сталкивался.