Skip to main content

C Dynamic Memory Allocation

C Dynamic Memory Allocation

In this tutorial, We will learn about dynamically allocate memory in your C program using standard library functions: malloc(), calloc(), free() and realloc().

Introduction

In an array, we have to declare the size of an array before you use it. Hence, the array size we declared may be insufficient or more than required to hold data. To solve this issue, you can allocate memory dynamically. This technique allows us to obtain more memory when required and release it when not necessary. In C program, dynamic allocation achieve by 4 function which comes under <sdlib.h> library.
  • malloc(): Allocates requested size of bytes and returns a pointer first byte of allocated space
  • calloc(): Allocates space for array elements, initializes to zero and then returns a pointer to memory
  • free(): deallocate the previously allocated space
  • realloc(): Change the size of previously allocated space

C malloc()

ptr = (cast-type*) malloc(byte-size)

Example
ptr = (int*) malloc(100 * sizeof(int));
calloc()
ptr = (cast-type*)calloc(n, element-size);

Example
ptr = (float*) calloc(25, sizeof(float));


free()
free(ptr);
realloc()
ptr = realloc(ptr, newsize);
Example #1
 #include <stdio.h>  
 #include <stdlib.h>  
 int main()  
 {  
   int num, i, *ptr, sum = 0;  
   printf("Enter number of elements: ");  
   scanf("%d", &num);  
   ptr = (int*) calloc(num, sizeof(int));  
   if(ptr == NULL)  
   {  
     printf("Error! memory not allocated.");  
     exit(0);  
   }  
   printf("Enter elements of array: ");  
   for(i = 0; i < num; ++i)  
   {  
     scanf("%d", ptr + i);  
     sum += *(ptr + i);  
   }  
   printf("Sum = %d", sum);  
   free(ptr);  
   return 0;  
 }  

Example #2
 #include <stdio.h>  
 #include <stdlib.h>  
 int main()  
 {  
   int *ptr, i , n1, n2;  
   printf("Enter size of array: ");  
   scanf("%d", &n1);  
   ptr = (int*) malloc(n1 * sizeof(int));  
   printf("Address of previously allocated memory: ");  
   for(i = 0; i < n1; ++i)  
      printf("%u\t",ptr + i);  
   printf("\nEnter new size of array: ");  
   scanf("%d", &n2);  
   ptr = realloc(ptr, n2);  
   for(i = 0; i < n2; ++i)  
      printf("%u\t", ptr + i);  
   return 0;  
 }  
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

Comments

Popular posts from this blog

OFFSET in Computer Science

OFFSET in Computer Science In the post, We will understand what is the meaning of OFFSET in computer science with an example. In computer science offset comes picture at may place like packing a data structure, encoding the data etc in some standard protocol so that other parties can deserialise it and understand the data. We will understand its important how does it work with example. suppose we have a data structure for a student like { name:string[20] roll: int[4] course: string[25] batch: int[4] } We want to serialise below student data  { name:"Amit Gupta" roll: 1234 course:Computer Science" batch: 2018 } Our protocol follow the rule that we will insert a value and if space will remain empty we will fill it with $ for example length of "Amit Gupta" is 10 but standard size is 20 so will fill 10 $ after "Amit Gupta". So serialisation of above data will be Amit Gupta$$$$$$$$$$1234Computer Sc...

Variable In C

Variable Like any other programming language in C programming language, we use a variable to store value, a value is any data like a number a or a character. In this post, we will learn about datatype of C programming language. Type Of Variable In C In this section, we will discuss how to store the following type of variable in C How to store an integer in C? How to store a float in C? How to store a double in C? How to store a long in C? How to store a character in C? As we already discussed that variable used to store data so that we can use it of other computation, for example, suppose we want to calculate the sum of two number then we have to store these two numbers first only after that we can use these two stored value to compute the sum. The entity that used to store a value called variable. What does it mean is suppose we tell a variable to store a number whose value is 5, the variable will place this number 5 in memory and we can variable in...

Clique in Graph

Clique in Graph In this tutorial, we will learn about the clique in the graph theory. Clique In graph theory, a clique is a subset of vertices of an undirected graph such that every two distinct vertices in the clique are adjacent. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

Supplementary angles

Supplementary angles Supplementary angles  are two angles with a sum of  180 ^\circ 1 8 0 ∘ 180, degree . A common case is when they lie on the same side of a straight line.