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