SİBERSALDİRİ.COM · KONU ODAKLI DERS
Bu derste kazanacaklarınız
- Nesne ile Adres arasındaki ilişkiyi açıklamak.
- “İşaretçi ile sahiplik aynı şey midir?” sorusuna gerekçeli yanıt vermek.
- Örneği değiştirip beklenen ve gözlenen davranışı karşılaştırmak.
Çalışma mantığı ve güven sınırı
Dereference öncesi null denetimi gerekir; fakat silinmiş nesneye işaret eden dangling pointer null olmayabilir. Sahipliği mümkün olduğunca akıllı işaretçilerle ifade edin. Tek sahip için unique_ptr, paylaşılan sahiplik gerçekten gerekiyorsa shared_ptr değerlendirilir. Ham işaretçi çoğunlukla ödünç erişim sözleşmesiyle kullanılmalıdır.
Açıklamalı örnek
Aşağıdaki parça kavramı görünür kılar. Komut veya kod içeren örnekleri üretim sisteminde değil, size ait ayrı deneme ortamında değerlendirin. Mimari şema ve politika örnekleri çalıştırılabilir program değildir.
#include <iostream>
int main() {
int value{7};
int* pointer{&value};
if (pointer) std::cout << *pointer;
}Beklenen sonuç ve yorumu
7 yazılır; pointer yeni nesne oluşturmaz, mevcut value adresini taşır.
Karşılaştırmalı durumlar
| Durum | Beklenen yaklaşım | Neden? |
|---|---|---|
| nullptr | Dereference etme | Nesne adresi yoktur |
| Geçerli ödünç adres | Ömür içinde kullan | Sahiplik devri değildir |
| Silinmiş nesne adresi | Kullanma | Null olmayabilir ama geçersizdir |
Uygulama görevi
Değeri işaretçi üzerinden değiştirin ve asıl değişkenin sonucunu gözlemleyin.
- İşlemden önce beklenen sonucu ve kabul koşulunu yazın.
- Tek bir değişkeni değiştirin; gözlemi ve kullandığınız ortamı kaydedin.
- Sonucu yukarıdaki karşılaştırma tablosuyla değerlendirin. Uymayan durumda hangi varsayımın yanlış olabileceğini açıklayın.
Sık yapılan hata ve düzeltme yönü
Null kontrolünün dangling pointer sorununu çözdüğünü varsaymayın.
Kendinizi sınayın
İşaretçi ile sahiplik aynı şey midir?
Açıklamalı yanıt: Hayır. Sahiplik belleğin kim tarafından ve ne zaman bırakılacağını tanımlayan ek sözleşmedir.
İlgili derslerle ilerleyin
- C++ referansları: Takma ad ve yaşam süresi
- C++ enum: Durumları güvenilir biçimde adlandırma
- C++ struct: İlgili verileri bir sözleşmede toplama
- C++ dizileri: Sabit boyut ve sınır güvenliği
Teknik başvuru
Bu dersin anlatımı ve örnekleri akademi için yeniden hazırlanmıştır. Aşağıdaki bağlantı, kullanılan teknoloji veya güvenlik yaklaşımının ayrıntılarını doğrulamak için teknik başvurudur.
