Dynamic memory allocation
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 (number *sizeof(int));Example
#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
Dynamically allocated memory : C Tutorialcalloc() function in c The calloc() function is used to allocate the multiple blocks of request memory. It allocates the memory with zero-initialize. Syntax:
calloc (number, sizeof(int));Example
#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
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:
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:
free (pointer_name);Example
#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); }
Output
Dynamically allocated memory C language:Resized memory : space extended upto 100 characters