C#進階編程學習筆記(四) 記憶體管理和指標

來源:互聯網
上載者:User

七、記憶體管理和指標

1、後台內在管理
2、釋放未託管的資源
在定義一個類時可以使用兩種機制來自動釋放資源:
    聲明一個解構函式(或終結器),作為類的一個成員。
    在類中實現System.IDisposable介面
解構函式:類似於一個方法,但前面加~。沒有傳回型別,不帶參數,沒有存取修飾詞。
C#編譯器在編譯解構函式時,會隱式地把解構函式的代碼編譯為Finalize()方法的對應代碼,確保執行父類的Finalize()方法。
C#解構函式執行會延遲物件最終從記憶體中刪除的時間。因為沒有解構函式的對象會在垃圾收集器的一次處理中從記憶體中刪除,但有解構函式的對象需要兩次處理才能刪除:第一次調用解構函式時,沒有刪除對象,第二次調用才真正刪除對象。可參考淺談C#的記憶體回收之引子:關於二次回收機制、解構函式、Dispose、and Finalize etc.. (http://www.cnblogs.com/sban/archive/2007/12/02/978737.html)
IDisposable介面:C#中推薦使用System.IDisposable介面替代解構函式
3、不安全的代碼
C#只允許標記unsafe的代碼使用指標。
C#中,*符號與類型有關,C++中,*與變數名相關。如int* px,py對應於C++中的int *px,*py
&表示“取地址”,並把一個實值型別轉換為指標,例如int轉換為*int.這個運算子稱為定址運算子。
*表示“擷取地址的內容”,把一個指標轉換為值資料類型(例如*float轉換為float).這個運算子稱為“間接定址運算子”(有時稱“取值 (Dereference)運算子”)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.