我使用MATLAB的mxDestroyArray()
function,想知道如何做适当的错误处理。MATLAB C API:mxDestroyArray(NULL)是做什么的?
如果我打电话mxCreate*Array()
或类似,我会得到一个有效的成功指针和NULL
失败,即我。即如果内存已满。
如果我以这种方式创建了几个数组,并且至少有一个失败,我想释放所有我不需要的东西。
这里我想知道:我需要明确检查每个值吗?
if (error) {
if (a) mxDestroyArray(a);
if (b) mxDestroyArray(b);
if (c) mxDestroyArray(c);
}
还是我可以省略检查?
if (error) {
mxDestroyArray(a);
mxDestroyArray(b);
mxDestroyArray(c);
}
我不确定,但我认为如果没有足够的内存,matlab会直接从您的mex文件中取出。在这种情况下,也许你仍然可以捕获一个异常或其他东西...无论如何,你可以键入'编辑([matlabroot'/extern/examples/refbook/matrixDivideComplex.c']);'看到由Mathworks编码的mex文件,在调用'mxDestroyArray'之前,它们什么都不做。 – Oli 2012-02-08 20:03:30
@Oli在mex文件的情况下,你是对的。但也有另一个方向 - 从外部程序调用MATLAB - 这是目前我的问题。在那里你可以得到一个NULL。 – glglgl 2012-02-08 23:49:06