In Static Memory Allocation, memory is allocated at compile time, that can’t be modified while executing program and is generally used in array.
In Dynamic Memory Allocation, memory is allocated at run time, that can be modified while executing program and is generally used in linked list.
Methods used for Dynamic memory allocation:
Method | Syntax | Uses |
malloc() | P = (cast_type*) malloc(byte_size) | To allocate a single block of requested memory. |
calloc() | P = (cast_type*) calloc(number, byte_size) | To allocate multiple block of requested memory. |
realloc() | P = realloc(P, new_size)
|
To allocate the memory occupied by malloc() or calloc() function. |
free() | free(P)
|
To free the dynamically allocated memory. |
Example:
#include<stdio.h> #include<stdlib.h> void main() { int n = 10; int *a, *b; a = (int*)malloc(n*sizeof(int)); printf("current address = %x \n",a); b = (int*)calloc(n,sizeof(int)); printf("current address = %x \n",b); } |
Output
current address = 3acba260 current address = 3acbb2a0 |