C Tutorial

C Tutorial C Language Environment Setup Execution flow of C program C printf and Scanf C Data type C Token Variable in C Operators in C Comments in C Escape Sequence in C C – Storage Classes C Decision control statement Loop Statement in C Break, continue and goto statement in C Type Casting in C Function in C Recursion in C String in C C Array Pointer in C Dynamic memory allocation C –Structure Nested Structure in C Union in C File Handling in C C pre-processor Static Function In C Sizeof In C Selection Sort In C Scope Of Variables In C Runtime Vs Compile Time In C Random Access Lseek In C Queue Implementation In C Pseudo Code In C Prototype In C Pointer To Pointer In C Pointer Arithmetic In C Passing Array To Function In C Null Character In C Merge Sort In C Macros In C Library Functions In C Memory Leak In C Int In C Goto And Labels In C Fibonacci Series In C Fflush In C Derived Data Types In C Data Types In C Const Vs Volatile In C Character Set In C Character Class Tests In C Calloc In C C Pointers Arrays In C Include In C Clrscr In C C Vs Java String Literals In C Types Of Pointers In C Variables In C Volatile In C Why C Is A Middle Level Language Infix To Postfix Program In C Ceil function in C LCM of two numbers in C Quick sort in C Static in C function pointer as argument in C Top Array Keywords in C Add two numbers using the function in C Armstrong program in C using function Array, Declaring Arrays and Array Initialization Limitations of Inline Function in C Merge and Merge sort with example in C Do-While Loop in C For Loop in C While-Loop in C Difference between while and do-while loop in C Array Of Structures in C Data Structures And Algorithms in C Types Of Structures In C How to Avoid Structure Padding in C Use of Structure in C Do WHILE LOOP in C Programming Examples For Loop in C Programming Examples Entry Control Loop in C Exit control loop in C Infinite loop in C Nested loop in C pow() function in C String Handling functions in C

Calloc in C

The calloc() is a library function in C which is used for memory allocation. The calloc() function dynamically allocates multiple blocks of memory to complex data structures.

This includes data structures such as arrays.

An array is a collection of items or logically related variables of identical data type which are stored in contiguous memory locations. Once the size of array is declared, it cannot be changed and hence the size of array declared may not be sufficient enough for the task it was declared for. This may lead to unwanted termination of the program or not getting the desired outputs.

This problem can be resolved by allocating the memory during run time, this process has to be manual. This manual declaration of memory at run time is known as dynamic memory allocation and this is carried by a special set of functions known as library functions. The calloc() is a library function in C which is used for dynamic memory allocation.

The malloc() function also performs the task of memory allocation but the allocated memory is uninitialized.

Meaning

The term calloc is short for contiguous allocation and is a library function in C which allocates the memory which is requested and returns a pointer to it. The pointer is returned to the beginning of the block of memory.

Note: The block of memory allocated is set to zero, i.e., all bits are set to zero.

Declaration

void *calloc (n, size)

where, n = number of elements to be allocated

             size = Size of the elements

Eg: p = (int*) calloc(10, sizeof(int));  /*This statement allocates contiguous space in 

    memory for 10 elements of type int */

Program: C program for showing the usage of calloc() function

#include <stdio.h>
#include <stdlib.h>


int main () 
{
   int i, n;   //declaring the local variables
   int *p;


   printf("Enter number of elements : "); //number of elements required
   scanf("%d",&n); //scanning the input


   p = (int*)calloc(n, sizeof(int));  //declaring the calloc function


   printf("Enter the numbers here (%d numbers) :\n",n); //numbers entered by user
   for( i=0 ; i < n ; i++ ) {


      scanf("%d",&p[i]);
   }


   printf("The numbers entered are as follows : ");


   for( i=0 ; i < n ; i++ ) {


   printf("%d ",p[i]);
   }


   free( p );


   return(0);
}

Output of the following program:

Calloc in C

Conclusion

The calloc() function is a library function in C and it is used for allocation of space for complex data types such as an array. It allocates space for an array of elements, initializes them to zero and then returns a pointer to the memory.

Note 1: Difference between malloc and calloc

              malloc() function allocates memory but does not set the memory to zero, i.e.,

             memory is uninitialized.

            calloc() function on the other hand allocates memory and set the memory to

             zero, all bits are initialized to zero.

Note 2: The calloc() function returns a pointer to the allocated memory, but if there is an error while allocating memory space like shortage of memory, then the return value is NULL.



ADVERTISEMENT
ADVERTISEMENT