وظيفة realloc() في مكتبة C: كيفية استخدامها؟ بناء الجملة والمثال

ما هو ريلوك ()؟

realloc () هي إحدى وظائف مكتبة C لإضافة المزيد من حجم الذاكرة إلى كتل الذاكرة المخصصة بالفعل. الغرض من إعادة التخصيص في لغة C هو توسيع كتل الذاكرة الحالية مع ترك المحتوى الأصلي كما هو. تساعد وظيفة realloc() على تقليل حجم الذاكرة المخصصة مسبقًا بواسطة وظائف malloc أو calloc. Realloc يعني إعادة تخصيص الذاكرة.

بناء الجملة لإعادة تخصيص في C

ptr = realloc (ptr,newsize);

يخصص البيان أعلاه مساحة ذاكرة جديدة بحجم محدد في حجم الأخبار المتغير. بعد تنفيذ وظيفةسيتم إرجاع المؤشر إلى البايت الأول من كتلة الذاكرة. يمكن أن يكون الحجم الجديد أكبر أو أصغر من الذاكرة السابقة. لا يمكننا التأكد من أن الكتلة المخصصة حديثًا ستشير إلى نفس موقع كتلة الذاكرة السابقة. ستقوم وظيفة إعادة التخصيص في لغة C بنسخ جميع البيانات السابقة في المنطقة الجديدة. فهو يتأكد من أن البيانات ستبقى آمنة.

فمثلا:

#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;
}

كيفية استخدام ريلوك ()

يوضح البرنامج أدناه في لغة C كيفية استخدام إعادة التخصيص في لغة C لإعادة تخصيص الذاكرة.

#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:

Memory created successfully

كلما أدت عملية إعادة التخصيص إلى عملية غير ناجحة، فإنها تعيد مؤشر فارغويتم تحرير البيانات السابقة أيضًا.