nullptr ve Boş İşaretçi Güvenliği
NULL veya 0 yerine nullptr kullanın ve boş işaretçi üzerinden erişimleri engelleyin
nullptr ve Boş İşaretçi Güvenliği, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.
Boş İşaretçi Nedir
Boş işaretçi, "hiçbir şeyi" göstermeyen özel bir değerdir. Gösterdiği değere erişmek tanımsız davranıştır — genellikle bölümleme hatasıyla çöker.
Modern C++'ta nullptr
C++11'den beri nullptr anahtar sözcüğü, türü olan bir boş işaretçi değişmezini temsil eder. NULL veya 0 yerine bunu tercih edin.
int* p1 = nullptr;
int* p2 = NULL; // legacy macro
int* p3 = 0; // legacy literalnullptr Neden Kullanılır
NULL, yalnızca 0 için kullanılan bir makrodur. int ve int* arasındaki aşırı yük çözümlemesini karıştırabilir. nullptr ise benzersiz std::nullptr_t türüne sahiptir.
void f(int);
void f(int*);
f(NULL); // calls f(int) -- surprising!
f(nullptr); // calls f(int*) -- correctBoş İşaretçiyi Denetleme
İşaretçiler bool türüne örtük olarak dönüşür: boş olmayan işaretçi doğru, boş işaretçi yanlıştır.
if (p) std::cout << "has value\n";
if (!p) std::cout << "is null\n";
if (p != nullptr) std::cout << "explicit form\n";Her Zaman Başlatın
Başlatılmamış işaretçiler çöp değerler içerir ve bir yeri gösteriyormuş gibi görünür. Yalnızca nullptr ile olsa bile her zaman başlatın.
int* p; // BAD: undefined contents
int* q = nullptr; // GOODBoş İşaretçinin Gösterdiği Adrese Erişme
Boş bir işaretçi üzerinden okumak veya yazmak tanımsız davranıştır. Çoğu masaüstü sisteminde bölümleme hatasına yol açar. Gömülü cihazlarda belleği sessizce bozabilir.
Koruyucu Denetimler
Genel arayüzlerde veya çağıran kodun boş bir işaretçi gönderebileceği durumlarda, gösterdiği değere erişmeden önce denetim yapın.
void process(int* data) {
if (!data) return;
*data *= 2;
}İşaretçiler Yerine Referanslar
Boş değer hiçbir zaman anlamlı değilse referans parametresi kullanın. Derleyici, referansın bir şeye bağlanmasını garanti eder.
// Before
void f(Widget* w); // can be null?
// After
void f(Widget& w); // must be a real widgetİsteğe Bağlı Değerler İçin std::optional
C++17, "belki bir değer" anlamı için std::optional<T> ekledi — bellek ayırma gerektirmeyen bağlamlarda, boş olabilir bir işaretçiden daha açıktır.
#include <optional>
std::optional<int> find(int x);
if (auto v = find(42)) std::cout << *v;Akıllı İşaretçiler ve Boş Değerler
std::unique_ptr ve std::shared_ptr de boş olabilir. Denetimler için bool türüne dönüşür ve = nullptr ile sıfırlanırlar.
Tuzak: delete Sonrasında Geçersiz İşaretçi
delete p sonrasında işaretçi eski adresi tutmaya devam eder. Sıfırlayın: p = nullptr;. Akıllı işaretçiler bunu otomatik olarak yapar.
Hızlı Kontrol
Modern C++'ta hangi boş işaretçi değişmezini kullanmalısınız?
Özet
Boş işaretçi değerleri için nullptr kullanın. İşaretçileri her zaman başlatın. Gösterdiği değere erişmeden önce denetim yapın veya daha iyisi, boş değer hiçbir zaman geçerli değilse referansları ve std::optional'ı kullanın.
Sıkça Sorulan Sorular
“nullptr ve Boş İşaretçi Güvenliği” dersi ücretsiz mi?
Evet — “nullptr ve Boş İşaretçi Güvenliği” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.
“nullptr ve Boş İşaretçi Güvenliği” dersinde ne öğreneceğim?
NULL veya 0 yerine nullptr kullanın ve boş işaretçi üzerinden erişimleri engelleyin C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C++ Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“nullptr ve Boş İşaretçi Güvenliği” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Ham İşaretçiler ve Adres Operatörü
- İşaretçi Gösterme ve İşaretçi Aritmetiği
- nullptr ve Boş İşaretçi Güvenliği
- İşaretçiler Ne Zaman, Referanslar Ne Zaman Kullanılmalı