15 DynamicMemoryAllocation
15 DynamicMemoryAllocation
As it can be seen that the length (size) of the array above made is 9. But what if there
is a requirement to change this length (size). For Example,
If there is a situation where only 5 elements are needed to be entered in this
array. In this case, the remaining 4 indices are just wasting memory in this array.
So there is a requirement to lessen the length (size) of the array from 9 to 5.
Take another situation. In this, there is an array of 9 elements with all 9 indices
filled. But there is a need to enter 3 more elements in this array. In this case 3
indices more are required. So the length (size) of the array needs to be changed
from 9 to 12.
This procedure is referred to as Dynamic Memory Allocation in C.
Therefore, C Dynamic Memory Allocation can be defined as a procedure in which the
size of a data structure (like Array) is changed during the runtime.
C provides some functions to achieve these tasks. There are 4 library functions
provided by C defined under <stdlib.h> header file to facilitate dynamic memory
allocation in C programming. They are:
1. malloc()
2. calloc()
3. realloc()
4. free()
1. malloc() method
“malloc” or “memory allocation” method in C is used to dynamically allocate a single
large block of memory with the specified size. It returns a pointer of type void which
can be cast into a pointer of any form. It initializes each block with default garbage
value.
Since the size of int is 2 bytes, this statement will allocate 200 bytes of memory. And,
the pointer ptr holds the address of the first byte in the allocated memory.
2. calloc() method
For Example:
This statement allocates contiguous space in memory for 5 elements each with the size
of the float.
3. realloc() method
4. free() method
Syntax: free(ptr);
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *ptr, *ptr1; // This pointer will hold the base address of the block created
int n, i;
return 0;
}