轉載地址:
EXC_BAD_ACCESS小結
- 簡單的理解:當遇到了 EXC_BAD_ACCESS 異常,意味着 訪問了一個已經被釋放的內存區域 。
- 指針層面理解:從C、OC語言來解釋,我們平時所操作的對象其實是一個指針,指針是指向另一塊存儲區域的變量。當向一個對象發送消息,指向這個對象的指針需要被使用,也就是你獲得了指針指向的內存地址並且可以訪問該內存塊的值。當系統不再爲你映射該內存塊時,換句話說,該內存塊已經不能夠被你所使用,則不可以再次訪問該內存塊。 如果再次訪問這塊內存,發生這種情況時,內核會發送一個異常(EXC),表明您的應用程序無法訪問該內存塊(BAD ACCESS)。
總之,當遇到了 EXC_BAD_ACCESS 異常,意味你嘗試向一個塊已經不能執行這個消息的內存塊發送消息。在某些情況下,訪問野指針也會導致EXC_BAD_ACCESS。當應用程序嘗試去使用一個 野指針 的時候,EXC_BAD_ACCESS就會被內核拋出。