在許多引擎中,資源的管理是乙個很重要的模組。為防止出現記憶體洩漏的情況,經常採用一些特殊的技術手段,智慧型指標就是其中一種有效方法。其基本原理是:
將指標看作類的例項,每種指標對應乙個類,每個具體的指標對應這個類的乙個例項。在類中設兩個成員變數,乙個作為計數器,另乙個則用來儲存此類所對應的new出來的記憶體的指標的具體值。
利用類的建構函式和析構函式,會在構造和析構時被自動呼叫的機制。在建構函式中對計數器作加一操作,在析構函式中對計數器作減一操作。當計數器值變為零時,將此指標所指向的記憶體delete掉。
由於是將指標看作是乙個類,所以在所有需要傳遞指標的地方,都要用其所對應的類的例項來代替。這樣就必須要考慮寫好複製建構函式的問題。以保證函式呼叫時的引數傳遞及返回的正確進行。
另外,也正是由於將指標當作乙個類,明顯的敝端是,在執行時由於要不斷地呼叫構造和析構函式,使得效率不可避免地降低了。
利用構造和析構函式的自動呼叫機制,可有效地防止記憶體洩漏,但同時也降低了指標的使用效率。可謂是有一利,則有一敝。
智慧型指標(二)智慧型指標的方法和構造
預設構造shared ptrsp和unique ptrup 指標構造shared ptrsp t 和unique ptrup t 這裡預設為explicit 帶刪除器的構造shared ptrp q,d q這裡可以內建指標和智慧型指標,同時將用d析構器代替delete。所以定義了這麼乙個帶刪除器的建...
智慧型指標 強弱智慧型指標
在平時編寫 的時候經常會用到new來開闢空間,而我們開闢出來的空間必須得手動去delete他,但是如果程式設計師忘記去手動釋放那邊會出現乙個麻煩的問題,記憶體洩漏!或者是一塊記憶體被多個函式同時使用時,如果其中乙個函式不知道還有其他人也在使用這塊記憶體而釋放掉的話同樣也會引起程式的崩潰。引起記憶體洩...
c 學習筆記十七 函式指標與智慧型指標
一般的函式指標 語法 返回型別 函式名 參數列 使用示例 char pfun int char glfun int a void main 第一行定義了乙個指標變數pfun,它是乙個指向某種函式的指標,這種函式引數是乙個int型,返回值是char型別。只有第一句我們還無法使用這個指標,因為我們還未對...