当我使用delete []时为什么Matlab会崩溃?

时间:2011-02-18 13:31:03

标签: matlab segmentation-fault mex

我正在编写两个处理一些持久内存的Matlab mex文件。基本上我想这样做

A *a = new A[n];

然后在我使用

时释放内存
delete[] a;

这是使用两个单独的mex函数调用完成的。问题是delete []语句使Matlab崩溃了一个分段错误。但是,如果我使用malloc保留内存,一切正常:

A *a = (A *) malloc(n*sizeof(A));
a = new(a) [n];

然后当我完成时

free(a);

为什么会这样?处理这种情况的正确方法是什么?

编辑:回顾代码,我意识到我上面并没有说实话。我在做什么就像是

A *a = new B[n];

然后

delete[] a;

其中B来自A。我现在发现这会导致未定义的行为......

0 个答案:

没有答案