This chapter will explain dynamic memory management in C. The C programming language provides several functions for memory allocation and management. These functions can be found in the <stdlib.h> header file.

S.N. Function
1 void *calloc(int num, int size);
2 void free(void *address);
3 void *malloc(int num);
4 void *realloc(void *address, int newsize);

Allocating Memory Dynamically

While doing programming, if you are aware about the size of an array, then it is easy and you can define it as an array. For example to store a name of any person, it can go max 100 characters so you can define something as follows:

				char name[100];

But now let us consider a situation where you have no idea about the length of the text you need to store, for example you want to store a detailed description about a topic. Here we need to define a pointer to character without defining how much memory is required and later based on requirement we can allocate memory as shown in the below example:

				#include <stdio.h>
				#include <stdlib.h>
				#include <string.h>
				int main()
				{
				char name[100];
				char *description;
				strcpy(name, "Zara Ali" );
				/* allocate memory dynamically */
				description = malloc( 200 * sizeof(char) );
				if( description == NULL )
				{
				fprintf(stderr, "Error - unable to allocate required
				memory\n" );
				}
				else
				{
				strcpy( description, "Zara ali a DPS student in class 10th" );
				}
				printf( "Name = %s\n" , name );
				printf( "Description: %s\n" , description );
				}
Output
Name = Zara Ali
Description: Zara ali a DPS student in class 10th

Resizing and Releasing Memory

When your program comes out, operating system automatically release all the memory allocated by your program but as a good practice when you are not in need of memory anymore then you should release that memory by calling the function free()

				printf( "Name = %s\n" , name );
				printf( "Description: %s\n" , description );
				/* release memory using free() function */
				free(description);