首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 記憶體管理:垃圾回收機制、安全與不安全程式碼、unsafe 關鍵字實戰

     編輯:關於C語言

垃圾回收:CLR vs JVM

  • Java:JVM 追蹤參考,無參考物件視為垃圾回收
  • C#:CLR 定期掃描 Managed Heap,釋放無參考物件資源

兩者皆自動管理物件生命週期,避免記憶體洩漏與過早釋放問題。

安全 vs 不安全程式碼

CLR 監管 IL 程式碼,預設為「安全程式碼」。需呼叫 Win32 API、使用指標等低層操作時,須標記 unsafe 區塊,開發者自負正確性責任。

unsafe 關鍵字三種用法

  • 整個方法:unsafe static void Method()
  • 程式碼區塊:unsafe { ... }
  • 單一陳述句

完整範例

using System;

class UnsafeClass
{
    unsafe static void PointyMethod()
    {
        int i = 10;
        int* p = &i;
        Console.WriteLine("*p = " + *p);
        string address = "Pointer p = " + ((int)p).ToString("X");
        Console.WriteLine(address);
    }

    static void StillPointy()
    {
        int i = 10;
        unsafe
        {
            int* p = &i;
            Console.WriteLine("*p = " + *p);
        }
    }

    static void Main()
    {
        PointyMethod();
        StillPointy();
    }
}

PointyMethod 整個方法標記 unsafe;StillPointy 僅區塊標記。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved