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

Average

Average In this post, We will learn about average.  Average of any collection of data is the sum of data divide by number of data. Average = (Sum of observations /  Number of observations) Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.  problems The arithmetic mean of x, y and z is 80, and that of x, y, z, u and v is 75, where u=(x+y)/2 and v=(y+z)/2. If x ≥ z, then the minimum possible value of x is (CAT 2018) As specified in the question mean of x and y and z is 80 x+y+z=3*80 mean of x, y, z,u,v is 75 x+y+z+u+v=75*5 2u=x+y 2v=y+z x+y+z+((x+y+y+z)/2)=75*5 y+3(x+y+z)=75*10 y=750-720 y=30 since x+y+z=240 y=30 so x+z=210 since x>=z so minimum value of x=210/2 = 105 Problem2: In first 5 inings sehwag has scored at average of 40. In sixth ining He had scored 52 what is His average after 6th ining. one simple approach is getting total score divided by no of inin...

Set Theory

Set Theory Set Theory is a branch of mathematics in which we study about sets and their properties. Georg Cantor (1845-1918), a German mathematician, initiated the concept ‘Theory of sets’ or ‘Set Theory’. He was working on “ Problems on Trigonometric Series ” when he encountered something that had become the most fundamental thing in mathematics. Set theory is the fundamental theory in mathematics. Without sets, it is not possible to explain relations, functions, sequences, probability, geometry etc. Apart from this, Cantor also conceptualized that some of the infinities are countable and others are uncountable. He introduced the fact that the uncountable infinite set of real numbers is larger than the countable infinite set of integers. This is known as Cantor’s diagonal argument. Let us now go ahead and learn the meaning of sets in maths. Sets: To understand sets, consider a practical scenario. While going to school from home, Nivy decided to note down the ...

Conditional Statements in C

Conditional Statements In c programming language, decision making is used to specify the order in which statements are executed. In C we use conditional statements to achieve this. There can be any type of control structures. In our daily life, these kinds of control structures generally achieve or used in our decision-making process. Control Structures types. If then            If I exercise daily then I will be fit If else             If today rains then I will play FIFA else I will not play FIFA. else if      In programming, we use a conditional statement to make decisions in the same way as in real life. If Statement Example if the expression it true evaluate the statement. if (expession) { statement } C example. You have given a number, check if the number is positive print Positive on the terminal. if (number > 0) { printf("Positive"); } ...