baidu_27066767
2015-04-02 03:05
采纳率: 100%
浏览 3.0k

matlab里调用C++,while循环处理vector导致崩溃

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。万分感谢!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • Jackery_Shh 2015-04-02 07:30
    已采纳

    你好,根据你的描述,你是不是在网上下载的代码直接运行或者修改后运行的,这很可能是你的matlab版本与以前的不同,某些定义会发生变化,也会导致在运行后,出现这种异常;我当时在大学的时候,就出现过你这样的错误,当时是某个变量定义问题,导致资源耗尽,具体解决方案你可以参考这边文章,关于C++与Matlab混合编程错误???希望对你有所帮助!

    点赞 评论
  • blownewbee 2015-04-02 03:21

    将vector先转换为数组等简单类型,再让matlab调用

    点赞 评论
  • oyljerry 2015-04-02 03:34

    看上去更像是C++代码中对vector处理有问题,比如循环遍历的时候,iterator是否操作正确

    点赞 评论
  • donwmufromdying 2015-04-02 06:34

    其实c++中,特别是工程性质的代码,你需要非常小心的处理变量的边界。比如:
    vector Y (N+1,0); 这里的N+1如果小于0时vector就会出错了。这里你的本意是该vector里边初始化了N+1个int型elements,值为0。
    再比如:vector ri (K-1,0); 万一K小于1呢?
    你如果想调试的话,最好的办法是在这些定义前后把变量的边界值printf出来看看

    点赞 评论

相关推荐 更多相似问题