ฟังก์ชันการจัดสรรหน่วยความจำ C ไลบรารีเป็นโมฆะ *calloc(size_t nitems, size_t size) จะจัดสรรหน่วยความจำที่ร้องขอและส่งกลับตัวชี้ไปที่หน่วยความจำนั้น
ความแตกต่างใน malloc และ calloc คือ malloc ไม่ได้ตั้งค่าหน่วยความจำเป็นศูนย์ ในขณะที่ calloc ตั้งค่าหน่วยความจำที่จัดสรรเป็นศูนย์
ฟังก์ชันการจัดสรรหน่วยความจำ
หน่วยความจำสามารถจัดสรรได้สองวิธีตามที่อธิบายไว้ด้านล่าง -

เมื่อจัดสรรหน่วยความจำ ณ เวลาคอมไพล์แล้ว จะไม่สามารถเปลี่ยนแปลงได้ในระหว่างการดำเนินการ จะมีปัญหาเรื่องความไม่เพียงพอหรือการสูญเสียความจำอย่างอื่น
วิธีแก้ไขคือสร้างหน่วยความจำแบบไดนามิก เช่น ตามความต้องการของผู้ใช้ระหว่างการทำงานของโปรแกรม
ฟังก์ชันไลบรารีมาตรฐานที่ใช้สำหรับการจัดการหน่วยความจำแบบไดนามิกมีดังนี้ -
- malloc ( )
- calloc ( )
- realloc ( )
- ฟรี ( )
ฟังก์ชัน Calloc ( )
-
ฟังก์ชันนี้ใช้สำหรับการจัดสรรบล็อกต่อเนื่องของหน่วยความจำ ณ รันไทม์
-
ออกแบบมาเป็นพิเศษสำหรับอาร์เรย์
-
ส่งคืนตัวชี้เป็นโมฆะ ซึ่งชี้ไปยังที่อยู่ฐานของหน่วยความจำที่จัดสรร
ไวยากรณ์สำหรับฟังก์ชัน calloc() มีดังต่อไปนี้ -
void *calloc ( numbers of elements, size in bytes)
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงการใช้งานฟังก์ชัน calloc()
int *ptr; ptr = (int * ) calloc (500,2);
ที่นี่ 500 บล็อกหน่วยความจำแต่ละขนาด 2 ไบต์จะได้รับการจัดสรรอย่างต่อเนื่อง หน่วยความจำทั้งหมดที่จัดสรร =1,000 ไบต์

int *ptr; ptr = (int * ) calloc (n, sizeof (int));
ตัวอย่างโปรแกรม
ด้านล่างนี้คือโปรแกรม C เพื่อคำนวณผลรวมของเลขคู่และเลขคี่ในชุดขององค์ประกอบโดยใช้ฟังก์ชันการจัดสรรหน่วยความจำแบบไดนามิก Calloc
#include<stdio.h>
#include<stdlib.h>
void main(){
//Declaring variables, pointers//
int i,n;
int *p;
int even=0,odd=0;
//Declaring base address p using Calloc//
p = (int * ) calloc (n, sizeof (int));
//Reading number of elements//
printf("Enter the number of elements : ");
scanf("%d",&n);
/*Printing O/p -
We have to use if statement because we have to check if memory
has been successfully allocated/reserved or not*/
if (p==NULL){
printf("Memory not available");
exit(0);
}
//Storing elements into location using for loop//
printf("The elements are : \n");
for(i=0;i<n;i++){
scanf("%d",p+i);
}
for(i=0;i<n;i++){
if(*(p+i)%2==0){
even=even+*(p+i);
} else {
odd=odd+*(p+i);
}
}
printf("The sum of even numbers is : %d\n",even);
printf("The sum of odd numbers is : %d\n",odd);
} ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
Enter the number of elements : 4 The elements are : 12 56 23 10 The sum of even numbers is : 78 The sum of odd numbers is : 23