Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

การใช้ realloc() ใน C


ฟังก์ชัน realloc ใช้เพื่อปรับขนาดบล็อกหน่วยความจำซึ่งได้รับการจัดสรรโดย malloc หรือ calloc ก่อนหน้านี้

นี่คือไวยากรณ์ของ realloc ในภาษา C

void *realloc(void *pointer, size_t size)

ที่นี่

ตัวชี้ − ตัวชี้ซึ่งชี้บล็อกหน่วยความจำที่จัดสรรไว้ก่อนหน้านี้โดย malloc หรือ calloc

ขนาด − ขนาดใหม่ของบล็อกหน่วยความจำ

นี่คือตัวอย่างของ realloc() ในภาษา C

ตัวอย่าง

#include <stdio.h>
#include <stdlib.h>
int main() {
   int n = 4, i, *p, s = 0;
   p = (int*) calloc(n, sizeof(int));
   if(p == NULL) {
      printf("\nError! memory not allocated.");
      exit(0);
   }
   printf("\nEnter elements of array : ");
   for(i = 0; i < n; ++i) {
      scanf("%d", p + i);
      s += *(p + i);
   }
   printf("\nSum : %d", s);
   p = (int*) realloc(p, 6);
   printf("\nEnter elements of array : ");
   for(i = 0; i < n; ++i) {
      scanf("%d", p + i);
      s += *(p + i);
   }
   printf("\nSum : %d", s);
   return 0;
}

ผลลัพธ์

Enter elements of array : 3 34 28 8
Sum : 73
Enter elements of array : 3 28 33 8 10 15
Sum : 145

ในโปรแกรมข้างต้น บล็อกหน่วยความจำจะถูกจัดสรรโดย calloc() และคำนวณผลรวมขององค์ประกอบ หลังจากนั้น realloc() จะปรับขนาดบล็อกหน่วยความจำจาก 4 เป็น 6 และคำนวณผลรวม

p = (int*) realloc(p, 6);
printf("\nEnter elements of array : ");
for(i = 0; i < n; ++i) {
   scanf("%d", p + i);
   s += *(p + i);
}