區域性變數的強指標破解迴圈保留

2021-07-07 07:42:11 字數 251 閱讀 6554

排查迴圈保留的方法有多種。例如用關聯物件去監聽,或檢視相應物件等等。

有種在block中的迴圈保留,是因為self引用了block,block引用了self。解決方法可以在block外定義乙個弱引用變數,在block內使用。若self可能會被釋放,為了在block中引用self,需要在block中定義乙個對self的弱引用的強引用,保證self不釋放,同時block結束,強引用釋放掉,無迴圈保留問題。

借這個小問題冒個泡,希望繼續不斷總結、提高、博大精深。

返回指向區域性變數的指標或引用

返回區域性變數沒問題 如果返回區域性變數有問題,函式的意義還有嗎?全域性變數還用返回嗎?返回指向區域性變數的指標才有問題 函式退棧之後,區域性變數消失,指標將指向未知區域,所以出現問題。返回區域性變數的引用也是絕對不可以的 引用只是變數的乙個別名,變數本體都不存在了,引用當然也沒有任何意義。還有,如...

C 函式返回區域性變數指標的問題

講這個問題之前要先簡單講一下c 的記憶體管理。更詳細的內容可以參考這篇文章 c 記憶體管理 c 程式的記憶體被分為堆 heap 棧 stack 全域性 靜態儲存區,自由儲存區和常量儲存區。1 堆 heap new的都存放在這裡,屬於動態分配,如果在程式中呼叫delete釋放掉,那麼將一直存在,直到程...

函式返回區域性變數的指標或引用

一般來說,由於在離開函式後區域性變數會被釋放,所以是不允許函式返回指向區域性變數的指標或引用的。我們往往需要遵循如下原則 引用作為返回值,必須遵守以下規則 1 不能返回區域性變數的引用。主要原因是區域性變數會在函式返回後被銷毀,因此被返回的引用就成為了 無所指 的引用,程式會進入未知狀態。2 不能返...