使用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