Dynamic Memory
Allocation
DMA
• The concept of dynamic memory allocation in c language enables the c
programmer to allocation memory at run time
• Dynamic memory allocation in c language is possible by 4 functions of stdlib.h
header file.
• 1. malloc()
• 2. calloc()
• 3. realloc()
• 4. free()
Static and Dynamic memory allocation
Static
• Memory is allocated at compile time
• Memory can’t be increase while
executing program
• Used in array
Dynamic
• Memory is allocated at run time
• Memory can be increase while
executing program
• Used in linked list
malloc() function in C
• The malloc function allocates single block of requested memory.
• It has garbage value initially.
• It returns NULL if memory is not sufficient.
Syntax of malloc():
Void * malloc(bite-size);
Ptr=(cast_type*)malloc(bite-size);
calloc() function in C
• The calloc() function allocates multiple block of requested
memory.
• It initially initialize all byte to zero.
• It returns NULL if memory is not sufficient.
Syntax of malloc():
Void * calloc(number,bite-size);
Ptr=(cast_type*)calloc(number,bite-size);
free() function in C
• The memory occupied by malloc() or calloc() functions must be
released by calling free() function.
• If memory is not released then it will consume memory until
program exit.
• Syntax of free() :
• free(ptr)
realloc() function in C
• If memory is not sufficient for malloc() or calloc(), you can
reallocate the memory by realloc () function.
• Syntax of realloc ():
• ptr=realloc(ptr,new-size);
Example
## include<stdio.h>
#include<stdlib.h>
int main()
{
int *p;
int i;
p=(int *)malloc(10*sizeof(int));
if(p==NULL)
{
printf("memory is not availble");
return 0;
}
printf("nenter number");
for(i=0;i<10;i++)
scanf("%d",p+i);
for(i=0;i<10;i++)
printf("nEntered number=%d",*(p+i));
p=(int *)realloc(p,11*sizeof(int));
*(p+10)=20;
printf("n new value is =%d",(*p+10));
free(p);
printf("n%d",*p);
}
Output : 20
20
Dynamic Memory Allocation in c prog.pptx

Dynamic Memory Allocation in c prog.pptx

  • 1.
  • 2.
    DMA • The conceptof dynamic memory allocation in c language enables the c programmer to allocation memory at run time • Dynamic memory allocation in c language is possible by 4 functions of stdlib.h header file. • 1. malloc() • 2. calloc() • 3. realloc() • 4. free()
  • 3.
    Static and Dynamicmemory allocation Static • Memory is allocated at compile time • Memory can’t be increase while executing program • Used in array Dynamic • Memory is allocated at run time • Memory can be increase while executing program • Used in linked list
  • 4.
    malloc() function inC • The malloc function allocates single block of requested memory. • It has garbage value initially. • It returns NULL if memory is not sufficient. Syntax of malloc(): Void * malloc(bite-size); Ptr=(cast_type*)malloc(bite-size);
  • 5.
    calloc() function inC • The calloc() function allocates multiple block of requested memory. • It initially initialize all byte to zero. • It returns NULL if memory is not sufficient. Syntax of malloc(): Void * calloc(number,bite-size); Ptr=(cast_type*)calloc(number,bite-size);
  • 6.
    free() function inC • The memory occupied by malloc() or calloc() functions must be released by calling free() function. • If memory is not released then it will consume memory until program exit. • Syntax of free() : • free(ptr)
  • 7.
    realloc() function inC • If memory is not sufficient for malloc() or calloc(), you can reallocate the memory by realloc () function. • Syntax of realloc (): • ptr=realloc(ptr,new-size);
  • 8.
    Example ## include<stdio.h> #include<stdlib.h> int main() { int*p; int i; p=(int *)malloc(10*sizeof(int)); if(p==NULL) { printf("memory is not availble"); return 0; } printf("nenter number"); for(i=0;i<10;i++) scanf("%d",p+i); for(i=0;i<10;i++) printf("nEntered number=%d",*(p+i)); p=(int *)realloc(p,11*sizeof(int)); *(p+10)=20; printf("n new value is =%d",(*p+10)); free(p); printf("n%d",*p); } Output : 20 20