最近在用c++和matlab 混合编程是遇到了一些问题,以下:c++
??? Unexpected Standard exception from MEX file.
What() is:c:program编程
Error in ==> mscale at 32
[rho,s] = matscale(abs(a),0.01);spa
Error in ==> utScaledExpm at 7
[s,junk,a] = mscale(a,'noperm','safebal');code
Error in ==> ssdata.utDiscretizeZOH at 171
s = utScaledExpm([[a b]*Ts; zeros(nu,nx+nu)]);内存
Error in ==> ssdata.trespSetUp at 104
[D,XMap] = utDiscretizeZOH(D,dt,XMap);get
Error in ==> ltidata.timeresp at 78
[Dsim,dt,tf,SimInfo] =
trespSetUp(D,RespType,dt,tf,x0);io
Error in ==> lti.step at 67
[y,t,focus] = timeresp(D,'step',t);容器
Error in ==> step at 125
yout = step(sys,t);配置
关于异常,请参加:http://www.cplusplus.com/reference/exception/exception/file
1. 直接在网上的程序或者直接用的别人的code,会因为配置以及环境问题致使问题,此处并不必定抛出异常,比较容易查找;
2. 程序当时的Matlab版本不一样与本身目前的Matlab版本不一样,有致使抛出异常的可能性,而且本身也有经历;
3.有时候,若是用C++的容器(list、vector等),若是size 或者迭代器使用不当也会致使越界访问异常,特别是对于容器的边界,尤为注意,本人曾在这里不止吃了一次苦头!
4. 由于内存分配与释放问题,在程序运行几回后,你的CPU占用率很高的话,就应该考虑此缘由,是否是忘记release resource了!
查找错误的关键在于跟踪与定位,切记哦!