matlab里调用C++,while循环处理vector导致崩溃。
我在matlab里调用C++ ,VS2010,用mex x.cpp,运行一次之后能出来结果,但接着重复运行一下就容易死机,也就是每次打开就能运行一次。有时运行几次没问题,但之后还是导致matlab崩溃。
是不是c ++代码最后要有一个释放资源什么的操作,求大神相助!
有时候报错
Unexpected Standard exception from MEX file.
What() is:bad allocation
C++代码见http://pan.baidu.com/s/1pJ0ZJzd。万分感谢!
你好,根据你的描述,你是不是在网上下载的代码直接运行或者修改后运行的,这很可能是你的matlab版本与以前的不同,某些定义会发生变化,也会导致在运行后,出现这种异常;我当时在大学的时候,就出现过你这样的错误,当时是某个变量定义问题,导致资源耗尽,具体解决方案你可以参考这边文章,关于C++与Matlab混合编程错误???希望对你有所帮助!其实c++中,特别是工程性质的代码,你需要非常小心的处理变量的边界。比如:
vector Y (N+1,0); 这里的N+1如果小于0时vector就会出错了。这里你的本意是该vector里边初始化了N+1个int型elements,值为0。
再比如:vector ri (K-1,0); 万一K小于1呢?
你如果想调试的话,最好的办法是在这些定义前后把变量的边界值printf出来看看
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。