C'de malloc nedir?
Malloc () işlevi bellek ayırma anlamına gelir. Dinamik olarak bir bellek bloğu tahsis etmek için kullanılan bir fonksiyondur. Belirtilen boyutta bellek alanı ayırır ve boş göstericiyi bellek konumuna işaret eder. Döndürülen işaretçi genellikle void tipindedir. Bu, herhangi bir işaretçiye malloc işlevi atayabileceğimiz anlamına gelir.
Sözdizimi
ptr = (cast_type *) malloc (byte_size);
Buraya,
- ptr bir cast_type göstericisidir.
- Malloc işlevi, ayrılan byte_size belleğine bir işaretçi döndürür.
Example: ptr = (int *) malloc (50)
Bu ifade başarıyla yürütüldüğünde, 50 baytlık bir hafıza alanı ayrılır. Ayrılmış alanın ilk baytının adresi int türündeki ptr işaretçisine atanır.
Malloc uygulamasının başka bir örneğini düşünün:
#includeint main(){int *ptr;ptr = malloc(15 * sizeof(*ptr)); /* a block of 15 integers */if (ptr != NULL) {*(ptr + 5) = 480; /* assign 480 to sixth integer */printf("Value of the 6th integer is %d",*(ptr + 5));}}
Çıktı:
Value of the 6th integer is 480
- * Ptr bildirimi daha sonra farklı bir veri türüne yazıldığında kodu daha sağlam hale getirmek için sizeof (int) yerine sizeof (* ptr) kullanıldığına dikkat edin .
- Bellek yeterli değilse ayırma başarısız olabilir. Bu durumda, bir NULL gösterici döndürür. Bu nedenle, bir NULL işaretçisi olup olmadığını kontrol etmek için kod eklemelisiniz.
- Ayrılan belleğin bitişik olduğunu ve bir dizi olarak değerlendirilebileceğini unutmayın. Dizi elemanlarına erişmek için köşeli parantez [] kullanmak yerine işaretçi aritmetiğini kullanabiliriz. Artış ++ veya + = kullanmak, işaretçi tarafından saklanan adresi değiştirdiğinden, dizi öğelerine başvurmak için + kullanmanızı öneririz.
Malloc işlevi, karakter veri türünün yanı sıra yapılar gibi karmaşık veri türleriyle de kullanılabilir.