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

Install Virtual Environment

VIRTUAL ENV Virtualenv is a tool to create an isolated Python environment. In this post, we will learn how to setup virtualenv on ubuntu. Prerequisite pip Install Virtualenv If you have pip3  sudo pip3 install virtualenv if you have pip sudo pip install virtualenv Create a Virtualenv virtualenv venv venv is a directory in which virtual environment will be created. Working with Virtualenv source venv/bin/activate Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

Equations

In general we frame real life problems into some mathematical formula called equations in which we use constant and some variables(unknown) Example: Ram is 12 years old.Ram 's age is 3/5 of Shyam's age what is Shyam's age. Let Shyam's age is x then 3/5 of sham's age is 3*x/5 x*3/5=12 x=60/3=20 so Shyam's age is 20. Linear equations When there is a linear combination of unknown variables is there then eqn is linear Example: 3x+ 2y+ 4z=9 Non Linear Equations: Equations in which non linear combination of the variable is there then eqn is non linear. When any 2 unknown variable multiplication present in the equation then it is the nonlinear equation. Example: 2x+5yz=98 is a nonlinear equation because yz multiplication is there: Quadratic equation in one variable: x^2 + 4*x + 2=0 is non linear because unknown variable x is being multiplied in term x^2 Quadratic equation in many variable: x^2 + y^2 +z^2 + w=0 cubic equati...

How Machine Learning (ML) Work

How Machine Learning (ML) Work In this post, We will learn how machine learning work. What is machine learning (ML) ? Machine learning is a study of model that compute use to progressively improve their performance on a specific task. What is Machine learning models ? Machine learning model contains a set of instruction or mathematical formula or in simple word it contain a piece of code in which we provide some data as input and model return some output. We learn more about model and how use a machine leaning model latter. How Machine Learning (ML) Work  ? This part we will understand with an example. Suppose want to have a simple application which will take a picture and banana or apple and application will tell us either it is banana or apple or picture is neither banana nor apple. To solve this problem first we provide a set of banana picture to our model and we will tell our model that this is a banana picture similarly we will provide a set of apple...

How to install certificates for command line

Install Certificates In this post, We will learn how to install the certificate on Ubuntu with the command line. Open your terminal and execute the following sequence of command. Here mycert.cer is the certificate that you want to install. $ sudo cp mycert.cer /usr/share/ca-certificates/mycert.pem $ sudo dpkg-reconfigure ca-certificates $ sudo update-ca-certificates $ git config --global http.sslCAInfo /usr/share/ca-certificates/mycert.pem Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.