我在 MATLAB 中编写了以下代码:
#include <string.h>
#include <stdlib.h>
#include "mex.h"
#include "matrix.h"
void mexFunction(int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[]){
double* x = (double*)malloc(5 * sizeof(*x));
int k;
for(k=0;k<5;k++)
x[k] = k;
mxArray* p1 = mxCreateDoubleMatrix(5, 1, mxREAL);
mxSetPr(p1, x);
}
我在没有输入或输出的情况下调用该函数。除了初始化一些向量之外,代码实际上什么都不做。我知道代码存在严重的内存泄漏,但除了内存泄漏之外,当我调用该函数时,MATLAB 会关闭。
如果我替换malloc
为mxMalloc
,代码将毫无问题地执行。我知道最好使用 mx* 来分配内存,但我确信 malloc 和 calloc 以及 free 可以毫无问题地在 MEX 中使用。
我也删除了(双*),但它仍然崩溃。
如果让我知道为什么提到的代码会导致 MATLAB 崩溃,我们将不胜感激。谢谢