benim gördüğüm ve anladığım kadarıyla yazılım aleminde sıkça rastlanan bir hata. kullanımı beyin yakan pointer'ların yarattığı bir çeşit kafa karışıklığı, tüm projenin canına okunmasına sebep olur. peki ama nasıl? c++ ile örnek bir kod yazarak durumu şöyle açıklamaya çalışalım:

#include <iostream>
using namespace std;

// bu kısım zaten komut satırına çıktı almak istediğimizden ve string veri tipini birazdan kullanacağımızdan ötürü zaruri bulunması gereken ön tanımlama kısmı. iostream kütüphanesini ve std isim uzayını kullanacağımızı bilgisayara belirtmiş olduk.

int main()
// main, adından da anlaşılacağı üzere ana fonksiyondur ve bir kod yazdığınızda gerçekleşecek işlemleri burada tanımlamak ya da belirtmek zorundasınızdır.
{
setlocale(lc_all, "turkish");
// bu kod komut satırında türkçe karakterleri de görüntüleyebilmemizi sağlıyor.

string *selam = nullptr;
//eğer başlangıçta bir değeri olmayacaksa işaretçiyi bilgisayara değersiz, yani null olarak bildirmek önemlidir. yani, bildirmeseniz de bir değer atamanız kaydıyla (mesela sıfır) çalışır ama null onun tam manasıyla değersiz olduğu anlamını dikte eder, '= 0' yapmak değil. ayrıca pointers, diğer adıyla işaretçilerin ne olduğunu anlamak için heap başlığındaki tanımımı da okumanızı tavsiye ederim.

string *selam = "naber sözlük";
// burada önceden heap'te selam işaretçisi ile ayırdığımız bölgeye naber sözlük biçimindeki string verimizi yerleştirdik, artık cout ile çıktı almak istediğimizde pointer'ımız bize "naber sözlük"ü gösterecek.

delete selam;

// bu noktada selam pointer'ımızın artık heap'te kapladığı yeri silmiş olduk; selam hala aynı yeri işaret ediyor ancak bu bölge ona ait değil.

cout << *selam;

// tam da yukarıda belirttiğim sebepten ötürü bu çıktı alma işlemini gerçekleştirmek mümkün olmuyor ve bilgisayar apışıp kalıyor.

ancak bu durum normalde yasak değildir, yani c++ derleyicileri hata vermez. dangling referans, bir runtime yani çalışma anı hatasıdır.

ki ayrıca bu da bir defa daha gösterir ki c++'ın derleyicilerini manipüle etmek oldukça kolaydır. tabi bu kötü bir şey değildir, geliştiriciyi minimum düzeyde kısıtlar. ama bu özgürlüğün de bedeli böyle ufak durumların başınıza büyük belalar açabilmesidir.
devamını gör...

bu başlığa tanım girmek için olabilirsiniz.

zaten üye iseniz giriş yapabilirsiniz.

"dangling referans" ile benzer başlıklar

normal sözlük'ü kullanarak 3. parti dahil tarayıcı çerezlerinin kullanımına izin vermektesiniz. Daha detaylı bilgi için çerez ve gizlilik politikamıza bakabilirsiniz.

online yazar listesini görmek için lütfen giriş yapın.
zaman tüneli köftehor rehberi portakal normal radyo kütüphane kulüpler renk modu online yazarlar puan tablosu yönetim kadrosu istatistikler iletişim