Skip to main content

Difference Between malloc() and calloc() with Examples

 Pre-requisite: Dynamic Memory Allocation in C using malloc(), calloc(), free() and realloc()

The name malloc and calloc() are library functions that allocate memory dynamically. It means that memory is allocated during runtime(execution of the program) from the heap segment.

  • Initialization: malloc() allocates memory block of given size (in bytes) and returns a pointer to the beginning of the block. malloc() doesn’t initialize the allocated memory. If we try to access the content of memory block(before initializing) then we’ll get segmentation fault error(or maybe garbage values)
void* malloc(size_t size); 

calloc() allocates the memory and also initializes the allocated memory block to zero. If we try to access the content of these blocks then we’ll get 0.

void* calloc(size_t num, size_t size); 

  • Number of arguments: Unlike malloc(), calloc() takes two arguments:
    1) Number of blocks to be allocated.
    2) Size of each block.
  • Return Value: After successful allocation in malloc() and calloc(), a pointer to the block of memory is returned otherwise NULL value is returned which indicates the failure of allocation.
  • For instance, If we want to allocate memory for array of 5 integers, see the following program:-

    // C program to demonstrate the use of calloc() 

    // and malloc() 

    #include <stdio.h> 

    #include <stdlib.h> 


    int main() 

    int* arr; 


    // malloc() allocate the memory for 5 integers 

    // containing garbage values 

    arr = (int*)malloc(5 * sizeof(int)); // 5*4bytes = 20 bytes 


    // Deallocates memory previously allocated by malloc() function 

    free(arr); 


    // calloc() allocate the memory for 5 integers and 

    // set 0 to all of them 

    arr = (int*)calloc(5, sizeof(int)); 


    // Deallocates memory previously allocated by calloc() function 

    free(arr); 


    return (0); 

    ptr = malloc(size); 
    memset(ptr, 0, size); 
    Note: It would be better to use malloc over calloc, unless we want the zero-initialization because malloc is faster than calloc. So if we just want to copy some stuff or do something that doesn’t require filling of the blocks with zeros, then malloc would be a better choice.

Comments

Popular posts from this blog

System Analysis and Design Elias M. Awad (Unit - 1)

Systems development is systematic process which includes phases such as planning, analysis, design, deployment, and maintenance. example :- Computer System , Business System , Hotel , Library , College. Audience This tutorial will help budding software professionals to understand how a system is designed in a systematic and phased manner, starting from requirement analysis to system implementation and maintenance. Prerequisites This tutorial is designed for absolute beginners and hence there are no prerequisites as such, however it is assumed that the reader is familiar with the fundamentals of computers. System   Systems development is systematic process which includes phases such as planning, analysis, design, deployment, and maintenance. Here, in this tutorial, we will primarily focus on − Systems analysis Systems design Systems Analysis It is a process of collecting and interpreting facts, identifying the problems, and decomposition of a system into its components. System analy...

Data Structure & Algorithm Basic Concepts [Part - 1]

  Data Definition Data Definition defines a particular data with the following characteristics. Atomic  − Definition should define a single concept. Traceable  − Definition should be able to be mapped to some data element. Accurate  − Definition should be unambiguous. Clear and Concise  − Definition should be understandable. Data Object Data Object represents an object having a data. Data Type Data type is a way to classify various types of data such as integer, string, etc. which determines the values that can be used with the corresponding type of data, the type of operations that can be performed on the corresponding type of data. There are two data types − Built-in Data Type Derived Data Type Built-in Data Type Those data types for which a language has built-in support are known as Built-in Data types. For example, most of the languages provide the following built-in data types. Integers Boolean (true, false) Floating (Decimal numbers) Character and Strings ...

Full Java Tutorial

Introduction to Java + Installing Java JDK and IntelliJ IDEA for Java #1   Introduction to Java + Installing Java JDK and IntelliJ IDEA for Java Java is one of the most popular programming languages because it is used in various tech fields like app development, web development, client-server applications, etc. Java is an object-oriented programming language developed by Sun Microsystems of the USA in 1991. It was originally called Oak by James Goslin. He was one of the inventors of Java. Java = Purely Object-Oriented. How Java Works? The source code in Java is first compiled into the bytecode. Then the Java Virtual Machine(JVM) compiles the bytecode to the machine code. Java Installation: Step 1:  Downloading JDK  JDK stands for Java Development Kit. It contains Java Virtual Machine(JVM) and Java Runtime Environment(JRE). JDK –  Java Development Kit = Collection of tools used for developing and running java programs. JRE –  Java Runtime Environment = Helps in e...