EXAMPLE ile C kütüphanesindeki malloc() Fonksiyonu

C'deki malloc nedir?

Malloc() işlevi bellek ayırma anlamına gelir. Bir bellek bloğunu dinamik olarak tahsis etmek için kullanılan bir fonksiyondur. Belirtilen boyutta bellek alanı ayırır ve bellek konumunu gösteren boş işaretçiyi döndürür. Döndürülen işaretçi genellikle void türündedir. Bu, herhangi bir işaretçiye malloc fonksiyonunu atayabileceğimiz anlamına gelir.

Sözdizimi

ptr = (cast_type *) malloc (byte_size);

Burada,

  • ptr, cast_type'ın bir işaretçisidir.
  • Malloc işlevi, ayrılmış 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 bellek alanı ayrılır. Ayrılmış alanın ilk baytının adresi int tipindeki ptr işaretçisine atanır.

Malloc uygulamasının başka bir örneğini düşünün:

#include <stdlib.h>
int 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

C'de malloc nedir

  1. Dikkat edin sizeof(*ptr) onun yerine kullanıldı sizeof(int) *ptr bildirimi daha sonra farklı bir veri türüne dönüştürüldüğünde kodun daha sağlam olmasını sağlamak için.
  2. Bellek yeterli değilse ayırma başarısız olabilir. Bu durumda NULL işaretçisi döndürür. Bu nedenle, NULL işaretçisini kontrol etmek için kod eklemelisiniz.
  3. Tahsis edilen belleğin bitişik olduğunu ve bir dizi olarak ele alınabileceğini unutmayın. Parantez [ ] kullanmak yerine dizi elemanlarına erişmek için işaretçi aritmetiğini kullanabiliriz. Dizi elemanlarına başvurmak için + kullanmanızı öneririz çünkü ++ veya += artırması, dizi tarafından depolanan adresi değiştirir. işaretçi.

Malloc fonksiyonu karakter veri tipinin yanı sıra yapılar gibi karmaşık veri tipleriyle de kullanılabilir.