Serbest Fonksiyonlu C'de Boş Bellek

Free Memory C With Free Function



C dili, bellek yönetimini idare edecek kadar verimlidir. Bu, C'de herhangi bir veri türünden düzenli bir değişken bildirdiğinizde, programınız başarıyla yürütüldükten sonra bu belleğin serbest bırakılmasından veya serbest bırakılmasından programlama dilinin kendisinin sorumlu olduğu anlamına gelir. Ancak, dinamik bellek tahsisi durumunda, belleği manuel olarak ayırdığınız için, onu kendi başınıza da serbest bırakmanız gerekir.

stdlib.h kitaplığında, bu amaca hizmet etmek için özel bir işlev, yani free() işlevi vardır. Bugün, bu işlevi C programlama dilinde kullanma ihtiyacını keşfedeceğiz. Bundan sonra, Linux'ta C programlama dilinde belleği manuel olarak boşaltmak için bu işlevin kullanıldığı birkaç örneğe bakacağız.







Sistem Belleğini Boşaltmak için C'deki Serbest İşlevi kullanma ihtiyacı:

Hepimiz bilgisayar sistemlerimizin sınırlı bir belleğe sahip olduğunu biliyoruz, bu nedenle içinde asla sonsuz program çalıştıramayız. Otomatik bellek ayırma durumunda, bilgisayar, programınızın yürütülmesini bitirdiğinde belleği boşaltmakla ilgilenir. Ancak hafızayı yığından manuel olarak tahsis ettiğimizde, onu bir şekilde boşaltmamız gerekiyor.



Aksi takdirde, sonunda hafızamız yetersiz kalır ve programlarımızı daha fazla çalıştırmayacağız. Burada stdlib.h kitaplığının free() işlevi devreye girer. Bu işlevi bir programın sonunda, return ifadesinden hemen önce kullanırız, böylece programınız sonlandırılmadan önce yığın belleğin bilgisayar sistemine geri döndürülmesi gerekir.



Özellikle dinamik bellek tahsisine yönelik C kodlarınızı yazarken bu işlevi görmezden geleceğinizi varsayalım. Bu durumda, belleğiniz tükeneceği için yığınınıza daha fazla erişemeyeceğiniz bir nokta gelecektir. Bu nedenle, dinamik olarak bellek tahsisi sorumluluğunu aldığınızda, görünüşte daha az değerli olan bu işlevi asla unutmamalısınız.





C programlama dilinde free() fonksiyonunun genel sözdizimi aşağıdaki gibidir:

geçersizBedava (geçersiz*ptr)

Burada, free() işlevinden önceki void anahtar sözcüğü, bu işlevin dönüş türünün geçersiz olduğunu belirtir. Köşeli parantez içindeki işaretçi, ayrılması gereken bellek konumuna karşılık gelir. Aşağıdaki bölüm, C'de edinilen dinamik belleği serbest bırakmak için free() işlevinin kullanıldığı bazı örnekleri açıklayacaktır.



C'de Serbest İşlevi Kullanma Örnekleri:

free() işlevi, stdlib.h kitaplığının üç bellek ayırma işleviyle, yani malloc, calloc ve realloc ile kullanılabilir. Program yürütülürken dinamik olarak ayırdığınız yığın belleği bilgisayar sisteminize geri aktarabilmeniz için programınızın temel işlevlerini belirttikten sonra bu işlevi kullanmanız zorunludur. Şimdi C programlama dilinde free() fonksiyonunun malloc ve calloc fonksiyonları ile birlikte kullanıldığı birkaç örneğe bakalım.

Örnek # 1: Serbest İşlevi C'de calloc ile kullanma:

free() işlevini calloc() işleviyle birlikte kullanmak için kullanılan C kodu aşağıdaki resimde paylaşılmıştır:

Bu kodun temel amacı, calloc() işlevi yardımıyla dinamik olarak bir miktar bellek atamaktı. Bunun için dinamik hafızanın boyutunu ve bu dinamik hafızanın değerlerini kullanıcıdan girdi olarak aldık. Daha sonra elde edilen değerleri terminale yazdırmayı amaçladık. Tüm bu koddan sonra, C programımızın yürütülmesi nedeniyle ayrılan dinamik belleği serbest bırakacak free() fonksiyonumuz var.

Aynı kodun biraz değiştirilmiş bir versiyonu da aşağıda belirtilen resimde gösterilmektedir:

Bu değiştirilmiş sürüm, yalnızca manuel başlatmadan önce dinamik olarak ayrılmış bellek değerlerimizi yazdırmayı amaçladı. calloc() işlevinin, gerçekleştirme gerçekleşmeden önce tüm belleği sıfırlarla başlattığını biliyoruz. Ancak, burada bu kodda dikkat edilmesi gereken ana nokta, bu kod oldukça kompakt ve basit olmasına rağmen, sadece sahip olduğumuz yığın belleği serbest bırakmak için istenen işlevsellik elde edildikten sonra yine de free() işlevini kullandık. Bu C programının yürütülmesinin bir sonucu olarak elde edilir.

Örnek # 2: Serbest İşlevi C'de malloc ile kullanma:

free() işlevini malloc() işleviyle birlikte kullanmak için kullanılan C kodu, aşağıdaki ekteki resimde paylaşılmıştır:

Bu kodun temel amacı, malloc() işlevi yardımıyla dinamik olarak bir miktar bellek atamaktı. Bunun için bu dinamik belleğin değerlerini bir for döngüsü içinde atadık. Daha sonra elde edilen değerleri başka bir for döngüsü yardımıyla terminale yazdırmayı amaçladık. Tüm bu koddan sonra, C programımızın yürütülmesinin bir sonucu olarak ayrılan dinamik belleği serbest bırakacak olan return ifadesinden hemen önce free() fonksiyonumuz var.

Çözüm:

Bu makale, Linux'ta C programlama dilinde free() işlevini kullanmanın önemini vurguladı. Kullanıcıların çoğu, stdlib.h dosyasının ayırma işlevlerinin daha önemli olduğuna inanır; ancak, bu makaleyi inceleyerek, free() işlevinin eşit derecede önemli olduğunu açıkça görebilirsiniz. Dinamik olarak edinilen belleği serbest bırakmanıza yardımcı olacak ve gelecekte programlarınızı çalıştırmayı denediğinizde asla belleğinizin bitmemesini sağlayacaktır.