CodeBlanks Logo Icon CodeBlanks

fixed deyimi

C# kursu · Uzman · Ders 9/47

fixed ile yönetilen nesneyi sabitlemeyi öğrenirsin.

fixed deyimi

Yönetilen bir dizinin (ör. int[]) adresini almak için fixed deyimi kullanılır. fixed, GC'nin o nesneyi bellekte sabitmesini (pin) sağlar; böylece işaretçi geçerli kalır.

Blok bitince sabitleme kaldırılır ve GC tekrar taşıyabilir. fixed olmadan işaretçi, GC'nin taşıması sonucu geçersiz adrese işaret edebilir; bu yüzden dizi ile işaretçi kullanımı her zaman fixed ile yapılır.

Sabitleme süresi

fixed bloğu içindeki kod çalıştığı sürece nesne sabitlenir. Blok çıkışında (ister normal ister istisra ile) sabitleme otomatik kaldırılır.

Uzun süreli sabitleme GC'nin bellek sıkıştırmasını engeller; bu yüzden fixed blokları kısa tutulur. Mümkünse Span<T> gibi sabitleme gerektirmeyen alternatifler tercih edilir; bu hem güvenliği hem de performansı dengeler.

Uygulama fixed ile ilk elemanı yazdır

Main'i unsafe yap. int[] arr = { 10, 20, 30 }; tanımla. fixed (int* p = &arr[0]) bloğu aç ve Console.WriteLine(*p); ile ilk elemanı yazdır.

Örnek çözümü göster
unsafe static void Main() { int[] arr = {10,20,30}; fixed (int* p = &arr[0]) { Console.WriteLine(*p); } }
Örnek çözüm:
using System;

class Program
{
    unsafe static void Main()
    {
        int[] arr = { 10, 20, 30 };
        fixed (int* p = &arr[0])
        {
            Console.WriteLine(*p);
        }
    }
}

Kendini test et

  1. fixed ne işe yarar?

    • Yeni nesne oluşturur
    • Metodu durdurur
    • Thread bekletir
    • Yönetilen nesneyi sabitler (pin)
    Cevabı göster

    Yönetilen nesneyi sabitler (pin) — Doğru. fixed, GC'nin nesneyi taşımasını engeller.

  2. fixed deyimini tamamla

    int[] arr = { 1, 2, 3 };
    ____ (int* p = &arr[0]) { /* ... */ }
    Cevabı göster
    int[] arr = { 1, 2, 3 };
    fixed (int* p = &arr[0]) { /* ... */ }
  3. fixed kavramlarını eşleştir

    fixed
    Nesneyi sabitler
    pin
    Sabitleme terimi
    &arr[0]
    Dizi ilk eleman adresi
    int*
    int işaretçi

Uzman bölümündeki tüm dersler