首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >App在Apple LLVM 3.0上崩溃,但在LLVM上工作正常,GCC 4.2

App在Apple LLVM 3.0上崩溃,但在LLVM上工作正常,GCC 4.2
EN

Stack Overflow用户
提问于 2011-11-01 22:51:43
回答 2查看 425关注 0票数 3

在使用Apple LLVM 3.0编译器时,我遇到了一个非常奇怪的崩溃。所以有一些代码,它使用Assimp来加载资源和创建场景(我已经排除了所有代码,即使这样它也会崩溃):

代码语言:javascript
复制
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编译器中的一个bug (可能是在arm汇编的生成过程中),还是我错过了什么?

编辑:

如果有人遇到类似问题,请使用aiReleaseImport(scene)代替delete scene;

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-01 23:28:44

你根本就不应该delete那个指针。请阅读文档。它清楚地指出,您不应该试图以任何方式释放它。

如果调用成功,则文件内容将作为指向aiScene对象的指针返回。返回的数据是只读的,导入器保留数据的所有权,并在销毁时销毁数据。如果导入失败,则返回NULL。可以通过调用aiGetErrorString()来检索人类可读的错误描述。

此外,文档明确指出它是只读的,所以不要const_cast const

票数 3
EN

Stack Overflow用户

发布于 2011-11-01 23:22:33

我之前也遇到过类似的问题,而且这种情况很少见,因为我对这个问题没有任何响应(除了我自己的) AppStore build crashes on launch on iPhone 3g and iPod Touch

它只会在iPhone 3g和老款iPod touch上崩溃。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7968286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档