Ben insanlar özgür bir bellek tahsisi eriştiğimde, benim deneyimimde olduğu gibi çok az yardımcı olduğunu düşünüyorum, çünkü neredeyse her yerde başka bir işaretçi var. Ve sonra "işe yaramaz dağınıklığı önlemek" olan başka bir kişisel kodlama standardı ile çakışıyor, bu yüzden nadiren yardımcı olduğunu ve kodu biraz daha az okunabilir hale getirdiğini düşünüyorum gibi yapmıyorum.
Ancak - eğer işaretçi tekrar kullanılmayacaksa, değişkeni null değerine ayarlamayacağım, ancak genellikle daha üst düzey tasarım bana yine de null değerine ayarlamak için bir neden verir. Örneğin, işaretçi bir sınıfın üyesiyse ve işaret ettiği şeyi sildim, sonra sınıftan hoşlanıyorsanız "sözleşme", o üyenin herhangi bir zamanda geçerli bir şeye işaret edeceği için null olarak ayarlanması gerekir bu sebepten dolayı. Küçük bir ayrım ama bence önemli bir ayrım.
C ++ 'da, bazı bellek ayırdığınızda (akıllı işaretçiler kullanmıyorsanız, ancak o zaman bile bir düşünce gerekli değilse) her zaman bu verilere kimin sahip olduğunu düşünmek önemlidir . Ve bu süreç, işaretçilerin genellikle bir sınıfın üyesi olmasına yol açar ve genellikle bir sınıfın her zaman geçerli bir durumda olmasını istersiniz ve bunu yapmanın en kolay yolu, üye değişkenini puanlarını belirtmek için NULL olarak ayarlamaktır. şimdi hiçbir şeye.
Yaygın bir örüntü, tüm üye işaretçileri yapıcıda NULL olarak ayarlamak ve yıkıcı çağrısının tasarımınızın sınıfın sahibi olduğunu söylediği verilere herhangi bir işaretçi üzerinde silinmesini sağlamaktır . Açıkçası bu durumda, daha önce hiçbir veriye sahip olmadığınızı belirtmek için bir şeyi sildiğinizde işaretçiyi NULL olarak ayarlamanız gerekir.
Özetlemek gerekirse, evet genellikle bir şeyi sildikten sonra işaretçiyi NULL olarak ayarladım, ancak daha büyük bir tasarımın ve kodlama standart kuralını körü körüne takip etmekten ziyade verilere kimin sahip olduğu hakkındaki düşüncelerin bir parçası olarak. Ben bunu yapmak için hiçbir faydası olduğunu düşünüyorum ve benim deneyimimde böcek ve kötü kod bu tür bir şey gibi sorumlu olduğu "dağınıklığı" ekler gibi ben senin örnekte böyle olmaz.
ptr == NULL
herhangi bir şey yapmadan önce kontrol etmek her zaman yararlıdır . Eğer ücretsiz işaretçilerinizi geçersiz kılmazsanızptr != NULL
yine de kullanılamaz bir işaretçi elde edersiniz .