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

Time, Speed and Distance

Time, Speed And Distance  In this post, We will learn about time, speed and distance. Important Formula Distance = Time x Speed Time = Distance/Speed Speed = Distance/time Important Units Distance: meter (m), kilometre (km) Time: Hour (h), second (s) speed: meter/second (m/s), kilometre/hour  (km/h) Important Conversion 1 km = 1000 meter 1 h = 3600 s 1 km/h = (5/18) m/s 1 m/s = (18/5) km/h Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above. 

Joint Entrance Exam (JEE): Probability Syllabus

JEE: Probability Syllabus Probability  is a very interesting and different topic of mathematics which doesn't require your previous knowledge of any other chapters other than permutation and combination.  Following topics are the part of Jee syllabus Addition and multiplication rules of probability Addition and multiplication rules of probability Conditional Probability Bayes Theorem Independence of events Computation of probability of events using permutations and combinations Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

Haryana Public Service Commission: HPSC 2018

Haryana Public Service Commission: HPSC 2018 Company Name         :  Haryana Public Service Commission: HPSC 2018 Recruitment Post Name                       :   Civil Judge State                            :  Haryana Salary                           :  Rs   27,700-44,770 Number of Vacancy   :  107 Eligibility                     :  Bachelor's Degree in Law Last Date to Apply     :  30-09-2018 Application Details    :  Notification Apply Online              :  Apply Here Government Jobs In  Haryana Please write comments if you f...

Securities and Exchange Board of India Recruitment 2018

Securities and Exchange Board of India  Company Name SEBI Post Name Assistant Manager State India Salary RS 28150-55600 Number of Vacancy 120 Eligibility Graduation Last Date 07-10-2018 Application Details Job Notification Apply Online Job Application Securities and Exchange Board of India (SEBI) Recruitment 2018    Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.