ฟังก์ชั่น realloc () ในไลบรารี C: วิธีการใช้งาน? ไวยากรณ์และตัวอย่าง

realloc() คืออะไร?

เรียลล็อค() เป็นฟังก์ชันของไลบรารี C สำหรับเพิ่มขนาดหน่วยความจำให้กับบล็อกหน่วยความจำที่จัดสรรไว้แล้ว วัตถุประสงค์ของการจัดสรรใหม่ใน C คือการขยายบล็อกหน่วยความจำปัจจุบันโดยปล่อยให้เนื้อหาต้นฉบับเหมือนเดิม ฟังก์ชัน realloc() ช่วยลดขนาดของหน่วยความจำที่จัดสรรไว้ก่อนหน้านี้โดยฟังก์ชัน malloc หรือ calloc realloc ย่อมาจากการจัดสรรหน่วยความจำใหม่

ไวยากรณ์สำหรับการจัดสรรใหม่ใน C

ptr = realloc (ptr,newsize);

คำสั่งข้างต้นจัดสรรพื้นที่หน่วยความจำใหม่ด้วยขนาดที่ระบุในตัวแปร newsize หลังจากดำเนินการ ฟังก์ชันตัวชี้จะถูกส่งกลับไปยังไบต์แรกของบล็อกหน่วยความจำ ขนาดใหม่อาจใหญ่หรือเล็กกว่าหน่วยความจำก่อนหน้าได้ เราไม่สามารถแน่ใจได้ว่าหากบล็อกที่จัดสรรใหม่จะชี้ไปยังตำแหน่งเดียวกันกับบล็อกหน่วยความจำก่อนหน้า ฟังก์ชัน realloc ใน 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 สาธิตวิธีการใช้ realloc ใน 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

เมื่อใดก็ตามที่การจัดสรรใหม่ส่งผลให้การดำเนินการไม่สำเร็จ ระบบจะส่งคืน ตัวชี้ค่าว่างและข้อมูลก่อนหน้าก็ถูกปลดปล่อยเช่นกัน