发生了一些奇怪的事情。我用MATLAB R2011创建了一个MEX文件,然后用Visual Studio 2010编译它。
我可以正确使用工作区中的MEX文件。 然后,我在MATLAB m文件中使用MEX文件(多次调用MEX文件)。当我试图运行它时,MATLAB崩溃并问我关闭。
尝试分析错误,我设置了断点,但是当我在m文件中放置断点时,一切都是正确的。实际上我运行所有m文件的方法是在函数末尾放置一个断点并运行正常,我也可以完成所有m文件而不会出错。
但是当我尝试在没有断点的情况下运行它时,MATLAB崩溃......
起初我认为它可能是内存,但为什么它可以正确使用断点?
如果你能给我一个解决这个问题的线索,我将不胜感激。
提前致谢
杰西卡
答案 0 :(得分:0)
我也认为这是一个记忆问题。
也许,当您通过调试器启动mex文件时,内存的处理方式不完全相同,或者在函数返回后发生问题。
您应该尝试使用this environment启动matlab以方便调试。
请注意,在错误的Mex功能后,内存损坏会导致Matlab崩溃。 这意味着您可能正在调试错误的功能。
如需进一步的帮助,我需要查看您的代码;)
答案 1 :(得分:0)
对我来说听起来像是记忆问题。正如Laurent所提到的,一些代码会有所帮助。
如果你可以重现崩溃,我建议调试c代码本身。确保运行mex文件的调试版本,在代码中设置断点,从Visual Studio附加到Matlab进程(ALt + Ctrl + p),然后从Matlab调用mex文件。