malloc



運行程序時沒有錯誤提示,出現如下信息


項目(702,0x198497310) malloc: stack logs being written into /private/var/mobile/Containers/Data/Application/461E4C49-CF65-49F6-8B76-AF30533D5390/tmp/stack-logs.702.100098000.TableDelete.3JtuAw.index

項目(702,0x198497310) malloc: recording malloc and VM allocation stacks to disk using standard recorder

項目(702,0x198497310) malloc: process 668 no longer exists, stack logs deleted from /private/var/mobile/Containers/Data/Application/461E4C49-CF65-49F6-8B76-AF30533D5390/tmp/stack-logs.668.1000a4000.TableDelete.CtzS13.index


將整個項目的源代碼複製到別一個新建的項目中,再運行就沒有問題了!
另:
在原來的項目中,使用debug模式啓動項目就會出上面的錯誤,但不以debug模式啓動時就能正常啓動....


解決方法:


打開
edit scheme ,在run模式下 取消Logging下的malloc stack選項即可(注:如果memory management下的enable guard malloc選項,則程序崩潰

NSZombieEnabled選項打開後,crash時能打印出具體的對象地址;Malloc Stack選項打開後,可以通過命令行打印出程序分配與釋放空間的歷史。兩者相互結合,往往就能發現到底是什麼對象被意外釋放了。

另附上 xcode EXC_BAD_ACCESS調試


1
.進入edit scheme 設置頁面

2.在diagnostics面板中enable zombie objects和malloc stack選項

3.把xcode默認的debugger設置爲GDB

4.當出現message sent to deallocated instance ***,鍵入info malloc-history ***
5.根據堆棧信息,定位到內存泄露的代碼


截圖如下:


     





我猜你是打開了Run菜單下的Enable Guard Malloc的設置
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章