我正在编写两个处理一些持久内存的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。我现在发现这会导致未定义的行为......