Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 应用程序在Apple LLVM 3.0上崩溃,但在LLVM GCC 4.2上正常工作_Iphone_C++_Gcc_Llvm - Fatal编程技术网

Iphone 应用程序在Apple LLVM 3.0上崩溃,但在LLVM GCC 4.2上正常工作

Iphone 应用程序在Apple LLVM 3.0上崩溃,但在LLVM GCC 4.2上正常工作,iphone,c++,gcc,llvm,Iphone,C++,Gcc,Llvm,我在使用Apple LLVM 3.0编译器时遇到了一个非常奇怪的崩溃。 因此,有一些代码用于加载资源和创建场景(我已经排除了所有代码,甚至在崩溃时): aiScene*ai_scene=const_cast(aiimportfilefrommmemory(fileBuf,fInfo.uncompressed_size,aiProcessPreset_TargetRealtime_MaxQuality,NULL)); 删除爱慕场景; 以下是GCC堆栈跟踪的屏幕截图: 以下是针对LLVM的:

我在使用Apple LLVM 3.0编译器时遇到了一个非常奇怪的崩溃。 因此,有一些代码用于加载资源和创建场景(我已经排除了所有代码,甚至在崩溃时):

aiScene*ai_scene=const_cast(aiimportfilefrommmemory(fileBuf,fInfo.uncompressed_size,aiProcessPreset_TargetRealtime_MaxQuality,NULL));
删除爱慕场景;
以下是GCC堆栈跟踪的屏幕截图:

以下是针对LLVM的:

在LLVM版本中,析构函数被调用了两次(这可能就是我崩溃的原因)

我还应该提到,所有析构函数代码都位于头文件中,并且只在设备上崩溃(在iPod4和iPad2上测试)

这是LLVM编译器中的一个bug(可能是在生成arm程序集时),还是我遗漏了什么

编辑:


如果有人有类似问题,请使用
aiReleaseImport(场景)
而不是
删除场景

我之前也遇到过类似的问题,这是非常罕见的,因为我对这个问题没有任何反应(除了我自己的)


它只会在iPhone 3g和旧的iPodtouch上崩溃。

你根本不应该删除那个指针。阅读文档。它清楚地表明,你不应该试图以任何方式释放它

如果调用成功,文件的内容将作为 指向aiScene对象的指针。返回的数据旨在 只读,导入程序保留数据的所有权,并将销毁数据 它一经毁灭就消失了。如果导入失败,则返回NULL。A. 可以通过调用 aiGetErrorString()


此外,文档明确声明它是只读的,因此不要将
const\u cast
常量
删除。

至于const\u cast-这是不推荐使用的代码,我将很快删除它(场景实际上被视为const)。感谢您为我指明了正确的方向。关于删除运算符,您是对的。
aiScene* ai_scene = const_cast<aiScene*>(aiImportFileFromMemory(fileBuf, fInfo.uncompressed_size, aiProcessPreset_TargetRealtime_MaxQuality, NULL));

delete ai_scene;