У меня есть 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 скопировать переменную?
EDIT
Так как я подозревал, что эта проблема является результатом того, что Matlab оптимизирует управление памятью, я произвел некоторые вычисления "ничего не делать" на var
перед вызовом mex-файла, т.е.
var=var+1;
var=var-1;
и это действительно решает проблему. Я все еще был бы рад получить некоторую информацию (или другие предложения) по этому поводу, если бы кто-то также сталкивался с этим.