Difference Between Malloc () And Calloc () In C

December 2022 · 6 minute read

Malloc ()

The malloc () function stands for memory allocation. It is a function which is used to allocate a block of memory dynamically from the heap. The heap is an area of memory where something is stored.  Calloc reserves memory space of specified size and returns the null pointer pointing to the memory location. The pointer returned is usually of type void. It means that we can assign malloc function to any pointer. Malloc () is useful when you don’t know the amount of memory required during compile time.

Malloc () is part of stdlib.h and to be able to use it you need to use #include <stdlib.h>. Malloc () allocates memory at runtime. It takes the size in bytes and allocates that much space in the memory and returns a pointer to the beginning of the allocated block.

C passes by value instead of reference. Using malloc () to assign memory and then pass the pointer to another function, is more efficient than having the function recreate the structure.

What You Need To Know About Malloc ()

Calloc ()

The calloc () function stands for contagious allocation. This function is used to allocate multiple blocks of memory. It is a dynamic memory allocation function which is used to allocate the memory to complex data structures such as arrays and structures.

The calloc () function allocates memory for an array of nmemb elements of size bytes each and returns a pointer to the allocated memory. The memory is set to zero. If nmemb or size is 0 then, calloc () return either NULL, or a unique pointer value that can later be successfully passed to free ().

What You Need To Know About Calloc ()

Also Read: Difference Between Structure And Union In C

Difference Between Malloc () And Calloc () In Tabular Form

BASIS OF COMPARISON  MALLOCCALLOC
DescriptionMalloc () is an abbreviation for memory allocation. It is a predefined function defined in the stdlib.h header file.  Calloc () is an abbreviation for contiguous allocation. It is an advancement over malloc () function.  
UseMalloc () is used to allocate memory during the runtime of a program.  Calloc () is used to allocate multiple blocks of memory of the same size dynamically.  
SyntaxSyntax of malloc ():  void*malloc(size_t  n);  Syntax of calloc ():  void*calloc(size_t  n, size_t  size);  
Memory InitializationThe memory allocated is uninitialized that means it has garbage values.  Memory initialization is performed by calloc (). The memory is initialized with zero.  
Number Of ArgumentsMalloc () accommodates a single argument at a time that is, number of byte.  The Calloc () function takes two arguments. The first argument is the number of blocks of memory to be allocated and the second argument is used to define the size of blocks in terms of bytes.  
Memory AllocationFor Malloc () if the memory allocation is successful, it returns a void pointer to the beginning of the allocated memory. This void pointer can be type-casted to any type of pointer. If the memory allocation fails due to reasons like insufficient memory, the malloc () function returns a NULL pointer.  For calloc (), if the memory allocation is successful, it returns a void pointer to the beginning of the allocated memory. This void pointer can be type-casted to any type of pointer. If the memory allocation fails due to reasons like insufficient memory, the calloc () function returns NULL pointer.  
Memory BlockMalloc () allocates a single block of memory with given byte-size.  Calloc () allocates multiple blocks of memory that are contagious in memory with given byte-size.  
PurposeMalloc () is used for creating structures.  Calloc () is for creating dynamic arrays.  
Memory Allocation SpeedMalloc () is relatively faster than calloc ().  Calloc () takes time to allocate multiple blocks of memory, because of the extra step of initializing the allocated memory by zero.

Also Read: Difference Between Stack And Heap In C++

Summary

The malloc () and calloc () functions return a pointer to the allocated memory that is suitably aligned for any kind of variable. On error, these functions return NULL. NULL may also be returned by a successful call to malloc () with a size of zero or by a successful call to calloc () with nmemb or size equal to zero.

Previous articleDifference Between Strong Entity Set And Weak Entity Set In DBMS (With Examples)Next articleDifference Between Function Overloading And Function Overriding In C++

ncG1vNJzZmiumauupbXFn5yrnZ6YsrR6wqikaHFdmbanssSrnKeblWKvpsDWnpynZZ2Wua27wmaYp5xdmK6tuM6cZKKmXZh8