У меня есть некоторые вопросы о mxMalloc и mxFree для выделения памяти в mex-коде. Предположим, я уверен, преобразование кода C в Matlab, и я выделить память, как это:Когда освободить выделенную память в файле mex
in= mxMalloc(sizeof(double)*N);
in =mxGetPr(prhs[0]);
Однако когда позже я освободить память с помощью
mxFree(in)
Я получаю ошибку нарушения сегментации. Интересно, может ли кто-нибудь объяснить, когда я должен понять, что я должен освободить и выделить память. какой тип указателей должен быть освобожден и какой тип не должен быть освобожден?
я действительно присвоить свой ответ, но что, если я не передавая данные назад я прочитал в других документах, что память, выделенная mxMalloc будет автоматически освобождена, когда программа ends.can пожалуйста подробнее остановиться на этом? – justin
@justin, пожалуйста, посмотрите мое обновление. – Suever
Большое вам спасибо. Мне было интересно, указывая на вход Matlab, и мой вывод от mex к Matlab - это что-то еще. Итак, почему это должно быть проблемой для освобождения, потому что я манипулирую внутри и в конце программы, я освобожусь после того, как Matlab передаст вход и выполнит все вычисления, затем наберите mxFree (in). – justin