Dynamic memory allocation is used to allocate the memory at runtime. It has following function within <stdlib.h> header file.
Function | Syntax |
malloc() | malloc (number *sizeof(int)); |
calloc() | calloc (number, sizeof(int)); |
realloc() | realloc (pointer_name, number * sizeof(int)); |
free() | free (pointer_name); |
malloc() function
The process of allocating memory during program execution is called dynamic memory allocation. It returns NULL if the memory is not sufficient. It does not initialize the memory allocation during the execution.
Syntax:
1 2 3 |
malloc (number *sizeof(int)); |
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#include <stdio.h> #include <string.h> #include <stdlib.h> int main(){ char *ma; /* Dynamically memory allocated */ ma = malloc( 20 * sizeof(char) ); if(ma== NULL ){ printf("Can not allocate requested memory\n"); } else{ strcpy( ma,"C Tutorial"); } printf("Dynamically allocated memory : %s\n", ma ); free(ma); } |
Output
1 2 3 |
Dynamically allocated memory : C Tutorial |
calloc() function in c
The calloc() function is used to allocate the multiple blocks of request memory. It allocates the memory with zero-initialize.
Syntax:
1 2 3 |
calloc (number, sizeof(int)); |
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#include <stdio.h> #include <string.h> #include <stdlib.h> int main(){ char *ma; /* memory is allocated dynamically */ ma = calloc( 20, sizeof(char) ); if( ma== NULL ){ printf("Can not allocate requested memory \n"); } else{ strcpy( ma,"C Example"); } printf("Dynamically allocated memory%s:\n ", ma); free(ma); } |
Output
1 2 3 |
Dynamically allocated memoryC Example: |
realloc() function in c
The realloc() function is used to modify the allocated memory size by malloc and calloc functions to new size.
Synatx:
1 2 3 |
realloc (pointer_name, number * sizeof(int)); |
free() function in c
The free() function is used to free the allocated memory by malloc(), calloc() functions and return the memory of the system.
syntax:
1 2 3 |
free (pointer_name); |
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#include <stdio.h> #include <string.h> #include <stdlib.h> int main(){ char *ma; ma = malloc( 20 * sizeof(char) ); /* memory allocated dynamically */ if( ma == NULL ){ printf("Couldn't able to allocate requested memory\n"); } else{ strcpy(ma,"C language"); } printf("Dynamically allocated memory %s:", ma); ma=realloc(ma,100*sizeof(char)); if( ma == NULL){ printf("Couldn't allocate requested memory"); } else{ strcpy(ma,"space extended upto 100 characters"); } printf("Resized memory : %s\n",ma); free(ma); } |
1 2 3 4 |
Dynamically allocated memory C language:Resized memory : space extended upto 100 characters |