Я пишу код mex, и я думаю, что я не использую память очень эффективно. Вот что я делаю. Я выделение памяти для переменной обнаруживаемых какОсвобождение памяти в коде mex
out=mxMalloc(sizeof(double)*N);
plhs[0]=mxCreateDoubleMatrix(1,N,mxREAL);
set(plhs[0],out);
Проблема заключается в том, что я не освобождая память, что я выделяю для переменной, потому что если я получу ошибку сегментации, так как я буду использовать его в Matlab. Так может ли кто-нибудь предложить мне лучшую технику делать то, что делают команды выше? Есть ли в любом случае свободная память для выхода или избежать определения матрицы длины 1X N?
Спасибо.
Помните, что мы хотим назначить plhs [0] то, что вы написали, мне кажется, что мы имеем plhs [0 [и вывод указывает на него. в моем случае это вектор данных 1XN, и я пытаюсь присвоить его plhs [0], который является моим выходом matlab. Можете ли вы подробно рассказать о своем ответе, а также можете ли вы рассказать мне, являются ли ваши результаты и мои результаты одинаковыми? – justin
@justin Извините, я имел в виду 'out'. Вы можете выделить 'out' в начале (используя' mxCreateDoubleMatrix', а затем заполнить его в остальной части вашего mex-файла. Нет необходимости выделять его отдельно. – Suever