使用Apple LLVM 3.0编译器时出现非常奇怪的崩溃。 因此,有一些代码,使用Assimp装入资产,并创建现场(我已经排除了我的所有代码,甚至然后它崩溃):苹果LLVM 3.0上的应用程序崩溃,但在LLVM GCC 4.2上正常工作4.2
aiScene* ai_scene = const_cast<aiScene*>(aiImportFileFromMemory(fileBuf, fInfo.uncompressed_size, aiProcessPreset_TargetRealtime_MaxQuality, NULL));
delete ai_scene;
下面是GCC堆栈跟踪的截图:
这里是LLVM:
在LLVM版本中,析构函数被调用两次(可能这就是为什么我会崩溃)。
我还应该提到,所有析构函数代码都位于头文件中,并且仅在设备上崩溃(在iPod 4和iPad 2上测试过)。
它是LLVM编译器中的错误(可能是在生成arm组件中)还是我错过了某些东西?
编辑:
万一有人有类似的问题,用aiReleaseImport(scene)
代替delete scene;
至于const_cast - 这是不推荐的代码,我将尽快删除(场景实际上被视为const)。 – Max
谢谢你指点我正确的方向。你对删除操作符是正确的。 – Max