C Programming Dynamic Memory Allocation in Linux

Why we need dynamic memory allocations ?

Let us consider the array declartion,

int marks[100];

Such declarations would typically be used if 100 student's marks were to be stored in memory. 200 bytes are reserved once this declaration is done.

We may store only 60 marks, but reserved 200 bytes and this leads to wastage of memory.

Suppose we may need to store more than 100 student's marks, this leads to falling short in size.

here no way to increase or decrease the array size during program execution. this is also called static memory allocations.

Dynamic Memory Allocations

In dynamic memory allocations, program allocates the memory only at runtime.

Allocating memory at runtime can be done using standard library functions malloc() and calloc() functions.

Dynamic Memory Allocation Using malloc function In C Program

This C program allocates memory for marks during program execution and it is done using malloc standard library function.

In this program, allocating memory to store marks based on number of students user input.

No memory wastage and shortage to store data.

malloc returns void pointer, so type casted to integer pointer.

Once memory is allocated using malloc, garbage value is stored as default.

malloc takes single argument for memory required in bytes.

#include <stdio.h>                                                                                                                      
                                                                                
int main()                                                                      
{                                                                               
  int n, avg, i, *mark, sum = 0;                                                
                                                                                
  printf("Enter number of studers: ");                                          
  scanf("%d", &n);                                                              
                                                                                
  mark = (int*)malloc(n*2);                                                     
  if(mark == NULL)                                                              
  {                                                                             
    printf("Memory allcoation is unsuccessful!");                               
    return 0;                                                                   
  }                                                                             
  for(i=0;i<n;i++)                                                              
  {                                                                             
    printf("\nMark %d: ", (i+1));                                               
    scanf("%d", (mark+i));                                                      
  }                                                                             
                                                                                
  for(i=0;i<n;i++)                                                              
    sum = sum + *(mark+i);                                                      
                                                                                
  avg = sum  / n;                                                               
                                                                                
  printf("Total marks: %d\n", sum);                                             
  printf("Average marks: %d\n", avg);                                           
  return 0;                                                                     
}  
Output:
$ cc dynamic-memory-alloc.c
dynamic-memory-alloc.c: In function ‘main’:
dynamic-memory-alloc.c:10:16: warning: implicit declaration of function ‘malloc’ [-Wimplicit-function-declaration]
   mark = (int*)malloc(n*2);
                ^~~~~~
dynamic-memory-alloc.c:10:16: warning: incompatible implicit declaration of built-in function ‘malloc’
dynamic-memory-alloc.c:10:16: note: include ‘’ or provide a declaration of ‘malloc’
$ ./a.out 
Enter number of studers: 3

Mark 1: 23

Mark 2: 54

Mark 3: 45
Total marks: 122
Average marks: 40

Dynamic Memory Allocation Using calloc function In C Program

This C program allocates memory for marks during program execution and it is done using calloc standard library function.

In this program, allocating memory to store marks based on number of students user input.

No memory wastage and shortage to store data.

calloc returns void pointer, so type casted to integer pointer.

Once memory is allocated using calloc, all stores zeros as default.

calloc takes two arguments number of storing elements and each element size (here integer element and size is 2 bytes).

#include <stdio.h>                                                                                                                                                                                    
                                                                                
int main()                                                                      
{                                                                               
  int n, avg, i, *mark, sum = 0;                                                
                                                                                
  printf("Enter number of studers: ");                                          
  scanf("%d", &n);                                                              
                                                                                
  mark = (int*)calloc(n, 2);                                                    
  if(mark == NULL)                                                              
  {                                                                             
    printf("Memory allcoation is unsuccessful!");                               
    return 0;                                                                   
  }                                                                             
  for(i=0;i<n;i++)                                                              
  {                                                                             
    printf("\nMark %d: ", (i+1));                                               
    scanf("%d", (mark+i));                                                      
  }                                                                             
                                                                                
  for(i=0;i7lt;n;i++)                                                              
    sum = sum + *(mark+i);                                                      
                                                                                
  avg = sum  / n;                                                               
                                                                                
  printf("Total marks: %d\n", sum);                                             
  printf("Average marks: %d\n", avg);                                           
  return 0;                                                                     
}     
Output:
$ cc dynamic-memory-alloc1.c 
dynamic-memory-alloc1.c: In function ‘main’:
dynamic-memory-alloc1.c:10:16: warning: implicit declaration of function ‘calloc’ [-Wimplicit-function-declaration]
   mark = (int*)calloc(n, 2);
                ^~~~~~
dynamic-memory-alloc1.c:10:16: warning: incompatible implicit declaration of built-in function ‘calloc’
dynamic-memory-alloc1.c:10:16: note: include ‘’ or provide a declaration of ‘calloc’
$ ./a.out 
Enter number of studers: 3

Mark 1: 26

Mark 2: 32

Mark 3: 67
Total marks: 125
Average marks: 41

C Programming Examples

C Program To Implement Linked List and Operations

C Program To Implement Sorted Linked List and Operations

C Program to Reverse the Linked List

C Program to Stack and Operations using Linked List

C Program to Queue and Operations using Linked List

C Program to calculate multiplication of two numbers using pointers

C Program To Calculate Median

C Program To Calculate Standard Deviation

C Program For Fahrenheit To Celsius Conversion

C Program To Calculate Average

C Program For Quadratic Equations

C Program To Check Character Type

C Program To Find Largest Of Three Values

C Program To Find Max Value In Array

C Program To Find Min Value In Array

C Program To Print Multiplication Table

C Program For Frequency Counting

C Program To Read A Line Of Text

C Program To Find ASCII Value For Any Character

C Program To Find A Character Is Number, Alphabet, Operator, or Special Character

C Program To Find Reverse Case For Any Alphhabet using ctype functions

C Program To Find Number Of Vowels In Input String

C Program Pointers Example Code

C Program To Find Leap Year Or Not

C Program To Swap Two Integers Using Call By Reference

C Program To Swap Two Integers Without Using Third Variable

C Program To List Prime Numbers Upto Limit

C Program To List Composite Numbers Upto Limit

C Program To Calculate Compound Interest

C Program To Calculate Depreciation Amount After of Before Few Years

C Program To Calculate Profit Percentage

C Program To Calculate Loss Percentage

C Program To Find String Is Polindrome Or Not

C Program To Find Factorial of a Number

C Program To Check Number is a Polindrome or Not

C Program To Generate Random Integers

C Program To Generate Random Float Numbers

C Program to find Square Root of a Number

C Program to find Area of a Rectangle

C Program to find Perimeter of a Rectangle

C Program to find Area of a Square

C Program to find Area of a Triangle

C Program to find Area of a Parallelogram

C Program to find Area of a Rhombus

C Program to find Area of a Trapezium

C Program to find Area of a Circle and Semi-circle

C Program to find Circumference of a Circle and Semi-circle

C Program to find length of an arc

C Program to find Area of a Sector

Privacy Policy  |  Copyright@2017 - All Rights Reserved.  |  Contact us   |  Report website issues in Github   |  Facebook page   |  Google+ page

Free online programming tutorials

Email Facebook Google LinkedIn Twitter
^