Matlab在将大型数组传递给Mex文件时崩溃

时间:2017-09-11 18:21:14

标签: matlab eigen mex

我正在尝试为LibIGL Normal函数编写一个包装器。但到目前为止,每次我用大数组调用mex函数时,我都设法使Matlab崩溃。所以我回去尝试编写一个只返回其中一个输入作为输出的函数。输出有效,但只有它是一个小数组。当我尝试传递一个大型数组(如53490x3)时,Matlab崩溃了。

我看了其他问题,并尝试了解决方案,但问题仍然存在。

我的代码如下:

open("/sys/class/pwm/pwmchip0/npwm", O_RDONLY);

从我用它的时间开始,当我试图访问V矩阵来填充输出时,似乎发生了崩溃。所以它正在发生某种无效的内存访问(这就是错误所说的)。但我不确定如何使这项工作。我理想的是将两个矩阵作为输入并计算一个结果,该结果将是另一个特征矩阵并将其作为输出返回。

1 个答案:

答案 0 :(得分:0)

两个建议:

  1. 您可能会溢出rowcolrow2col2。将它们从int更改为mwSize。不太可能是一个问题,但它将取决于机器,你不提你的设置。您可以查看limits.h INT_MAX,这通常很多,但mwSize最安全。用mexPrintf输出它们以确保它们符合您的期望。

  2. 你可能会失去记忆。检查plhs[0]是否不是NULL53490x3

  3. 不应该是个问题