Malloc() Vs Calloc() Vs Realloc() in C

Malloc(), Calloc() and Realloc():

On this page we will discuss about dynamic memory allocation using malloc function, contiguous memory allocation using calloc function and realloction of memory using realloc function in C programming language.

Malloc() Vs Calloc() Vs Realloc() in C

Definitions:

Malloc()

  • The memory allocation function, or malloc(), allocates a block of memory in a dynamic manner.
  • It returns the null pointer, which corresponds to the memory address, and reserves the memory space for the provided size.
  • A memory block of specified size is allocate at run time by malloc.
  • A pointer of void type is returned by malloc function which can be convert into pointer of any type.

Calloc()

  • The dynamic memory allocation in C can be done by using the calloc function.
  • The Calloc function makes it possible to allocate memory in many blocks of the same size.
  • It is defined in the stdlib.h header file.
  • Every memory block was initially set to zero by the calloc() function.

Realloc()

  • The C library’s realloc() function allows you to increase the size of memory blocks that have already been allocated.
  • Realloc is a function in C that allows you to increase the size of existing memory blocks without changing their content.
  • The realloc() function aids in shrinking memory that has previously been allocated using the malloc or calloc procedures.
  • The block’s contents are unaltered up to the smaller of the two sizes.

Important Note :

  • Realloc( ) function is used to change the size of the memory block without losing the old data.
  • It is a built in function declared in stdlib.h .As the name itself suggests realloc( ) means reallocation.

Syntax:

void*realloc(void*ptr, newsize);

Example of Malloc():

Run
#include<stdio.h>
#include<stdlib.h>
int main ()
{
  int n, i, *ptr, sum = 0;
  printf ("Enter number of elements = ");
  scanf ("%d", &n);
  ptr = (int *) malloc (n * sizeof (int));
  if (ptr == NULL)
    {
      printf ("Memory not allocated.");
      exit (0);
    }
  printf ("Enter elements = ");
  for (i = 0; i < n; ++i)
    {
      scanf ("%d", ptr + i);
      sum += *(ptr + i);
    }
  printf (" Total Sum = %d", sum);
  free (ptr);
  return 0;
}

Output:

Enter number of elements = 5
Enter elements = 9
8
7
6
5
Total Sum = 35

Example of Calloc():

Run
#include<stdio.h>
#include<stdlib.h>
int main ()
{
  int n, i, *ptr, sum = 0;
  printf ("Enter number of elements = ");
  scanf ("%d", &n);
  ptr = (int *) calloc (n, sizeof (int));
  if (ptr == NULL)
    {
      printf ("Memory not allocated");
      exit (0);
    }
  printf ("Enter elements = ");
  for (i = 0; i < n; ++i)
    {
      scanf ("%d", ptr + i);
      sum += *(ptr + i);
    }
  printf ("Total Sum = %d", sum);
  free (ptr);
  return 0;
}

Output:

Enter number of elements = 5 
Enter elements = 1 
2
3 
4 
5 
Total Sum = 15

Example of Realloc():

Run
#include<stdio.h>
#include<stdlib.h>
int main ()
{
  int *ptr, i, n1, n2;
  printf ("Enter size = ");
  scanf ("%d", &n1);
  ptr = (int *) malloc (n1 * sizeof (int));
  printf ("Addresses of previously allocated memory =\n");
  for (i = 0; i < n1; ++i)
    printf ("%pc\n", ptr + i);
  printf ("\nEnter the new size = ");
  scanf ("%d", &n2);
  ptr = realloc (ptr, n2 * sizeof (int));
  printf ("Addresses of newly allocated memory =\n");
  for (i = 0; i < n2; ++i)
    printf ("%pc\n", ptr + i);
  free (ptr);
  return 0;
}

Output:

Enter size = 5
Addresses of previously allocated memory =
0x555601564ac0c
0x555601564ac4c
0x555601564ac8c
0x555601564accc
0x555601564ad0c

Enter the new size = 6
Addresses of newly allocated memory =
0x555601564ac0c
0x555601564ac4c
0x555601564ac8c
0x555601564accc
0x555601564ad0c
0x555601564ad4c

Prime Course Trailer

Related Banners

Get PrepInsta Prime & get Access to all 200+ courses offered by PrepInsta in One Subscription

Get over 200+ course One Subscription

Courses like AI/ML, Cloud Computing, Ethical Hacking, C, C++, Java, Python, DSA (All Languages), Competitive Coding (All Languages), TCS, Infosys, Wipro, Amazon, DBMS, SQL and others

Checkout list of all the video courses in PrepInsta Prime Subscription

Checkout list of all the video courses in PrepInsta Prime Subscription