未经处理的异常: Microsoft C++ 异常 std::bad_alloc

         首先还是探险问题的引出,最近在做OSG,自己编译好后不知道该用哪个版本了,也就是链接器的输入中的dll到底是采用debug的还是realse的。于是就用了realse版本,结果就是报上面的错误,自己换成debug版本后解决问题。下面就问题深入下,有时间的客官就往下看看。

       还是结合OSG,论坛上对这个问题有过一个总结,问题的出现总结一下三点:

   1 依赖库设置是否正确(Debug库对应Debug工程,Release对应Release工程);
   2 OSG库版本的编译器版本(例如VS8)是否与工程所用编译器相符;
   3 glider.osg是否存在并且可以正确读入
   针对2的解决办法如下
   在OSG官网上特别指出,windows中不同开发化境编译的OSG安装包,最好在相同开发环境使用,也就是是说,VS2010编译的安装包,VS2008就不要使了,因为编译器版本不同。
下载二进制源码包,在当前环境下编译,安装。
问题任然没有解决。

   在下一步:
   忽然想到,之前用的是VS2010,换了VS2008。因为不同编译器(可以理解为不同的开发环境,或是不同版本)编译出的OSG包在其它环境中问题太多。所以我就下载适合VS2008的安装包,并保留之前OSG安装包。之前的OSG安装包改名为OSG2010,现在在VS2008中用的OSG安装包名民为OSG2008,给两者都设置了环境变量。哈哈,原来问题就在这里。把OSG201的环境变量删除,便可顺利运行。重复环境变量,而这两个环境变量又不分优先级,所以调用函数不成功,没有分配内存(具体过程不详,有待探索)。
    如果还想深究,那么关于C++ 的std::bad_alloc异常,其实是动态分配内存不成功引起的。具体解决办法具体问题具体分析吧。
    

你可能感兴趣的:(C++,OSG,stdbad_alloc)