bugün
- cedidacer'in fenerbahçeli bir ezik olması19
- bir yazarı seven yazarı da sevmemek4
- sözlükte hic tayt giyen kız olmaması5
- bir insana yapılabilecek en büyük kötülük18
- 6'ncı nesil uçakta dünyada söz sahibi olmamız11
- türkiye de iyi bir insan olmak4
- ciddi ciddi maymundan geldiğine inanmak8
- gençler iş beğenmiyor diyen genç patron9
- derealizasyon3
- onca zorluğun arasında mağaraya resim yapan tip5
- yeşil gözlü bir kıza aşık olmak6
- annesizlik8
- herkesin bir felsefesi olmasının imkansızlığı2
- tasavvuf4
- macbook edinme sebepleri4
- erkek regline isim önerileri4
- kısa şort giyen şişman kız3
- lahmacun yiyen erkeklerin kıro olması2
- yaz aylarında bol bol kadın ayağı görmek5
- yaşayan en ünlü filozof2
- 25 yıllık akp iktidarından çıkarılacak ders3
- müge anlı ile tatlı sert2
- seküler kız muhafazakar erkek birlikteliği7
- otomatik şanzımanın bozulması2
- fatoş pınar türker3
- 12 haziran2
- chp tabanında kılıçdaroğlu'na destek yüzde 794
- 9 haziran 2026 barış yarkadaş'ın ağlaması2
- chp'nin hali ne olacak34
- müze gezmek3
- altının düşüşü6
- byd nin türkiye ye yapacagi yatirimdan vazgeçmesi6
- sözlük kadınlarının bugünkü kombini17
- potamya da doğmuş türk lider2
- bursa'da evden 20 ton çöp çıkarılması2
- eğitimsiz cahillerin okul okumayı aşağılaması5
- yalnızlık7
- ellerim bos gonlum hos5
- selahattin demirtaş vs recep tayyip erdoğan3
- türk kızlarının sekste başarısız olması5
- teslimiyet3
- fatoş pınar türker'in sözlükte konuşulmaması2
- edirneli kız isimleri4
- türkiye de protestonun lafta kalması4
- kötü hissedildiğinde rahatlamak için yapılan şey6
- suavi3
- türkiye'nin mavi vatan hazırlığı4
- fakir ve cahilken doğurmak4
- türk erkeği azerbaycan kızı evliliği2
- gül gibi uyuyan yılanı uyandırdın2
Daha önce bir sitede paylaştım. Buraya da paylaşayım.
Bir pointer düşünelim bu pointer’ı bir değişkene atayalım. Sonra ikinci bir pointer olduğunu varsayalım bu ikinci pointer’ı da ilk pointer’a atayalım. Bu durumda iki pointer da aynı adrese bakmış oluyor. Bu durum segmentation fault hatasina sebep olmaktadir ve buffer overflow yapılmasına davet çıkardığı için güvenlik açığı oluşturabilir.
ilk pointer fflush ve stding parametresiyle temizleniyor yani deallocate ediliyor varsayalım. Bu durumda bu bölgenin değeri nil olmakta. Ve bu durumda ikinci pointer dangling pointer yani sarkıtılmış gösterge (o kadar çevirisini aradım en mantıklısı bu oldu) olmakta.
Çözüm için bazı yöntemler var. Bunlardan birisi akıllı pointer kullanımıdır. C++11 ile kullanımı biten auto_ptr ve onun yerine gelen unique_ptr kullanılabilir ilk yöntemlerdir.
Bir de bunun başka bir alternatifi olarak tombstone metodu var. Burada da yapılan şey pointer değişkenin başına başka bir değer ekliyoruz.
Öncelikle bahsettiğimiz konuya dair bir örnek kod verelim:
görsel
Bu hataya yakalanmış bir kodun çıktısı şöyle olacaktır. Tabii bu sistemden sisteme göre değişir. Aslında bu çıktı çöp bir değerdir.
Örneğin koding.com sanal makinesinde yaptığım denemenin sonucu:
görsel
Bu da kendi makinemde yaptığım işlemin sonucu:
görsel
Bu hatanın bize verdiği çıktılar compile time’da şöyle olacaktır:
warning: function returns address of local variable [-Wreturn-local-addr]
ya da
warning: function returns address of local variable
Bu hataları alıyorsak derleme zamanında demek ki bir yerlerde dangling pointer oluşmuştur. Bunu çözmemiz aslında basit. Verdiğimiz kodda oluşturduğumuz x değişkenini static variable’a çevirmemiz yetecektir.
Yani bu durumda şöyle bir değişiklik olacak:
görsel
Şimdi artık bu kodumuz dangling pointerdan arındırılmış vaziyette. Buradaki x değişkeni yerel bir değişkendir. x değişkeninin adresi cagri işlevi içerisinde döndürüldükten sonra sıfırlanıyor. Ancak pointer hala bu adresi işaret ediyordu. Dangling pointer hatasının açıklaması buydu. Biz bu değişiklik ile bu hatayı çözüme kavuşturmuş olduk.
Koding sanal makinesindeki çıktı:
görsel
Kendi makinemdeki çıktı:
görsel
Bir pointer düşünelim bu pointer’ı bir değişkene atayalım. Sonra ikinci bir pointer olduğunu varsayalım bu ikinci pointer’ı da ilk pointer’a atayalım. Bu durumda iki pointer da aynı adrese bakmış oluyor. Bu durum segmentation fault hatasina sebep olmaktadir ve buffer overflow yapılmasına davet çıkardığı için güvenlik açığı oluşturabilir.
ilk pointer fflush ve stding parametresiyle temizleniyor yani deallocate ediliyor varsayalım. Bu durumda bu bölgenin değeri nil olmakta. Ve bu durumda ikinci pointer dangling pointer yani sarkıtılmış gösterge (o kadar çevirisini aradım en mantıklısı bu oldu) olmakta.
Çözüm için bazı yöntemler var. Bunlardan birisi akıllı pointer kullanımıdır. C++11 ile kullanımı biten auto_ptr ve onun yerine gelen unique_ptr kullanılabilir ilk yöntemlerdir.
Bir de bunun başka bir alternatifi olarak tombstone metodu var. Burada da yapılan şey pointer değişkenin başına başka bir değer ekliyoruz.
Öncelikle bahsettiğimiz konuya dair bir örnek kod verelim:
görsel
Bu hataya yakalanmış bir kodun çıktısı şöyle olacaktır. Tabii bu sistemden sisteme göre değişir. Aslında bu çıktı çöp bir değerdir.
Örneğin koding.com sanal makinesinde yaptığım denemenin sonucu:
görsel
Bu da kendi makinemde yaptığım işlemin sonucu:
görsel
Bu hatanın bize verdiği çıktılar compile time’da şöyle olacaktır:
warning: function returns address of local variable [-Wreturn-local-addr]
ya da
warning: function returns address of local variable
Bu hataları alıyorsak derleme zamanında demek ki bir yerlerde dangling pointer oluşmuştur. Bunu çözmemiz aslında basit. Verdiğimiz kodda oluşturduğumuz x değişkenini static variable’a çevirmemiz yetecektir.
Yani bu durumda şöyle bir değişiklik olacak:
görsel
Şimdi artık bu kodumuz dangling pointerdan arındırılmış vaziyette. Buradaki x değişkeni yerel bir değişkendir. x değişkeninin adresi cagri işlevi içerisinde döndürüldükten sonra sıfırlanıyor. Ancak pointer hala bu adresi işaret ediyordu. Dangling pointer hatasının açıklaması buydu. Biz bu değişiklik ile bu hatayı çözüme kavuşturmuş olduk.
Koding sanal makinesindeki çıktı:
görsel
Kendi makinemdeki çıktı:
görsel
Gündemdeki Haberler
güncel Önemli Başlıklar
