C Kütüphanesinde realloc() Fonksiyonu: Nasıl kullanılır? Sözdizimi ve Örnek

realloc() nedir?

realloc() zaten tahsis edilmiş bellek bloklarına daha fazla bellek boyutu eklemek için C kütüphanesinin bir işlevidir. C'deki realloc'un amacı, orijinal içeriği olduğu gibi bırakarak mevcut bellek bloklarını genişletmektir. realloc() işlevi, malloc veya calloc işlevleri tarafından önceden ayrılmış belleğin boyutunun azaltılmasına yardımcı olur. realloc, belleğin yeniden tahsisi anlamına gelir.

C'de realloc için sözdizimi

ptr = realloc (ptr,newsize);

Yukarıdaki ifade, newsize değişkeninde belirtilen boyutta yeni bir bellek alanı ayırır. Çalıştırdıktan sonra işlev, işaretçi bellek bloğunun ilk baytına döndürülecektir. Yeni boyut önceki bellekten daha büyük veya daha küçük olabilir. Yeni ayrılan bloğun önceki bellek bloğuyla aynı konuma işaret edip etmeyeceğinden emin olamayız. C'deki realloc işlevi, yeni bölgedeki tüm önceki verileri kopyalayacaktır. Verilerin güvende kalmasını sağlar.

Örneğin:

#include <stdio.h>
int main () {
   char *ptr;
   ptr = (char *) malloc(10);
   strcpy(ptr, "Programming");
   printf(" %s,  Address = %u\n", ptr, ptr);

   ptr = (char *) realloc(ptr, 20); //ptr is reallocated with new size
   strcat(ptr, " In 'C'");
   printf(" %s,  Address = %u\n", ptr, ptr);
   free(ptr);
   return 0;
}

realloc() nasıl kullanılır?

Aşağıdaki C programı, belleği yeniden tahsis etmek için C'de realloc'un nasıl kullanılacağını gösterir.

#include <stdio.h>
#include <stdlib.h>
    int main() {
        int i, * ptr, sum = 0;
        ptr = malloc(100);
        if (ptr == NULL) {
            printf("Error! memory not allocated.");
            exit(0);
        }
        
        ptr = realloc(ptr,500);
    if(ptr != NULL)
           printf("Memory created successfully\n");
           
    return 0;

    }

C örneğindeki realloc'un sonucu:

Memory created successfully

Realloc başarısız bir işlemle sonuçlandığında, bir değer döndürür. boş işaretçisive önceki veriler de serbest bırakılır.