Compete with the best coders in AccioWars! & win prizes worth 10 lakhs | Register now for FREE

C standard library function – free()

In case of static memory allocation there are some drawbacks like: wastage of memory, less flexibility, permanent allocation of variables etc. To overcome these situations the concept of Dynamic Memory Allocation has been introduced. In dynamic memory allocation the memories can be allocated dynamically at run time.

There 4 library functions that are described under <stdlib.h> (Standard Library Functions)

1. malloc()
2. calloc()
3. realloc()
4. free()

In this article we’ll elaborately learn about free().

What is free()?

In dynamic memory allocation the memory have to be deallocated explicitly. It releases all the used memory spaces previously allocated by calloc(), malloc() or realloc() functions. If we no longer need the data stored in a particular block of memory, then we should have a practice to release that memory for future use. After freeing the memory blocks the memories are returned to heap.

free() is used to save unused memory by freeing it. Dynamic allocation have this advantage which static allocation lacks.



Lets take an example to understand.

/* C code to execute free() in DMA */
/* */

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

// Driver code
int main() {
    int *p, n;     // Pointer and the variables are initialized
    printf("Enter the size of array: ");
    scanf("%d", &n);

    p = (int*) calloc(n, sizeof(int));  // An int array of n elements has been assigned to the pointer
    if(p==NULL) {
        printf("\nMemory allocation unsuccessful using calloc");
    else {
        printf("\nMemory allocation successful using calloc");
        printf("\nEnter the elements of the array: ");
        for(int i=0; i<n; ++i)
            scanf("%d", p+i);   // Array elements are taken as input
        printf("\nThe elements of the array: ");
        for(int i=0; i<n; ++i)
             printf("%d ", *(p + i));   // Print element of the array
        free(p);     //frees the space allocated in the memory
        printf("\nMemory has been freed successfully using free");
    return 0;


Enter the size of array: 5
Enter the elements of the array: 1 2 3 4 5 


Memory allocation successful using calloc
The elements of the array: 1 2 3 4 5 
Memory has been freed successfully using free


Previously allocated memory was 5 * 4[no. of elements * sizeof(int)] = 20 bytes using calloc. By using the function “free()”, the space allocated to the memory has been deleted thereafter.

Follow Us

You Missed

Also Checkout