İçeriğe geç
academia.sh

Kurs Orta

C'de Bellek ve İşaretçiler

Yayın Güncelleme

Bu kursun sonunda

Kursa başla

01

İşaretçiler

Adres alma ve işaret edilen değere erişme, işaretçi aritmetiğinin eleman cinsinden ilerlemesi, dizinin işaretçiye bozunması, boş ve sarkan işaretçiler, opak işaretçilerle tip gizleme ve fonksiyon işaretçileriyle geri çağrı — her biri işaret edilen belleğin sahibi sorusuyla birlikte.

  1. 01 İşaretçi Temelleri Bir bellek bloğunu kimin sahiplendiği sorusu; beş dosyalık ölçüm çekirdeğinin tam koşumu ve dört sınıfın (dil, çağıran, çağrılan, sahipsiz) 4/4/3/2 dağılımı, ardından adres alma ve dolaylama işleçlerinin adres basılmadan ölçülmesi.
  2. 02 İşaretçi Aritmetiği Bir işaretçiyi artırmanın, azaltmanın ve iki işaretçiyi çıkarmanın neden bayt cinsinden değil eleman cinsinden işlediği; sınır dışına taşan bir aritmetiğin neden hiç koşulmadığı.
  3. 03 Diziler ve İşaretçiler Bir dizi adının bir işleve geçerken ilk elemanının adresine bozunması, uzunluk bilgisinin bu bozunmada neden kaybolduğu ve dinamik olarak ayrılmış bir dizinin sahipliğinin çağırana geçtiği.
  4. 04 Boş ve Sarkan İşaretçiler Boş işaretçinin denetlenebilir bir durum olduğu, sarkan bir işaretçinin ise bırakılmış bir bloğu göstermeye devam ettiği ve bu yüzden hiç koşturulmadığı; ikisinin de sahipsiz sınıfının iki farklı yüzü olduğu.
  5. 05 `void` ve Opak İşaretçiler Bir void işaretçinin gösterdiği tipin bilinçli olarak gizlenmesi ve opak bir tipin içeriğini tamamen saklayarak sahipliği çağrılan modülde tutması.
  6. 06 Fonksiyon İşaretçileri Bir işlevin kendisini gösteren ve başka bir işleve parametre olarak geçirilebilen işaretçiler; bir geri çağrının taşıdığı bağlamın sahipliğinin çağırana ait olduğu.

02

Dinamik Bellek

Ayırma, sıfırlayarak ayırma ve yeniden boyutlandırma işlevleri, serbest bırakma sözleşmesinin başlık dosyasında belgelenmesi, bellek sızıntısının sayaç farkıyla ölçülmesi, bir aracın yakalayıp yakalamadığı, ve belleğin otomatik, statik ve dinamik alanlara bölünmesi.

  1. 01 Bellek Ayırma İşlevleri malloc, calloc, realloc ve free aynı öbekten çalışır ve dördü de aynı soruyu bırakır: ayırdığın bloğu kim bırakacak? Yanıt hep aynıdır — ayıran çağırandır; ders bunu sayaç farkıyla, sıfırlamayı doğrudan okuyarak, yeniden boyutlandırmayı ise eski sahipliğin değişmediğini göstererek ölçüyor.
  2. 02 Serbest Bırakma Disiplini Bir işlev bir metni döndürdüğünde, o metnin sahibinin kim olduğu imzada yazmaz — yazan, başlık dosyasındaki yorumdur. Aynı kaydı gösteren iki işlev, biri ödünç verip biri kopya döndürerek, aynı sözleşmenin iki farklı sahibe nasıl bağlanabildiğini gösteriyor.
  3. 03 Bellek Sızıntıları Bir bellek sızıntısı ne bir hata mesajı verir ne programı çökertir — yalnız ayrılan ile bırakılan arasındaki farkı büyütür. Ders iki yoldan sızıntı üretiyor, ikisini de sayaç farkıyla yakalıyor ve toplamın neden tam 2 çıktığını gösteriyor.
  4. 04 Bellek Hata Ayıklama Araçları Bir sızıntıyı elle sayaç tutarak bulmak gerçek bir programda mümkün değildir — bunu yapan bir araç çalıştırılır. Ders, kursun baştan beri kullandığı sayaçlı sarmalayıcının, böyle bir aracın yaptığı tek şeyi zaten modellediğini gösteriyor: her ayırmanın karşılığında bir bırakma var mı, yok mu.
  5. 05 Bellek Düzeni Bir programın belleği tek bir alan değildir; otomatik, statik ve dinamik olmak üzere ayrı bölgelere bölünür ve bir bloğun hangi bölgede durduğu, onun sahibinin kim olacağını baştan belirler. Ders dört dil gözlemini ayir ve birak gözlemiyle yan yana koyup bu ayrımı adres basmadan ölçüyor.

03

Sağlamlık

Tanımsız davranışın neden var olduğu ve yerine tanımlı karşılığın nasıl yazıldığı, dönüş kodu ve hata numarasıyla hata bildirimi, uzunluğu çağıranın verdiği sınır denetimi, ve uygulamaya bağlı davranışların taşınabilir koddan yalıtılması.

  1. 01 Tanımsız Davranış Sarkan işaretçi okumak, bırakılmış belleği kullanmak, bir bloğu iki kez bırakmak ve dizinin sınırı dışına erişmek dördü de tanımsız davranıştır; hiçbiri koşturulmaz, ders her birini düzyazıda tarif eder ve yanına tanımlı karşılığını koşturarak gösterir.
  2. 02 Hata Yönetimi Kalıpları Bir işlev başarısız olduğunda, o ana kadar ayırdığı bloğu kimin bırakacağı derleyicinin denetlediği bir kural değil, işlevin kendi sözleşmesidir; ders bunu dönüş kodu, hata numarası ve tek çıkış noktalı temizlik kalıbıyla koşturarak ölçer.
  3. 03 Sınır Denetimi kayit_olustur'un sinir parametresi uzunluğu kaynaktan değil, çağırandan alır; ders bu parametrenin bir arabellek taşmasını nasıl önlediğini, snprintf'in kesme bildirimini ve uzunluğun kimin sorumluluğunda olduğunu koşturarak gösterir.
  4. 04 Taşınabilirlik Ortak tanımın bilerek basmadığı üç değer — adresler, char dışındaki tip boyutları, malloc(0) dönüşü — hedefe bağlıdır; bu ders bir değeri basmak yerine standardın garanti ettiği bir karşılaştırmayı basarak hedefe bağlı davranışı yalıtıyor ve kursun on beş dersini kapanış tablosunda topluyor.

Bitirme sınavı

C'de Bellek ve İşaretçiler — Bitirme Sınavı

Hazırlanıyor

Bu kursun soru bankası henüz tamamlanmadı. Yeterli soru eklendiğinde sınav burada otomatik olarak açılır.

Aramak için yazmaya başlayın.

↑↓ ↵ Esc gezin · aç · kapat