DYNAMIC MEMORY ALLOCATION AND LINKED LISTS IN C










DYNAMIC MEMORY ALLOCATION

THE PROCESS OF ALLOCATING MEMORY AT RUN TIME IS KNOWN AS DYNAMIC MEMORY ALLOCATION. DYNAMIC MEMORY ALLOCATION CAN BE DEFINED AS A PROCEDURE IN WHICH THE SIZE OF A DATA STRUCTURE IS CHANGED DURING THE RUN TIME.






THERE ARE FOUR LIBRARY FUNCTIONS PROVIDED BY C TO FACILITATE DYNAMIC MEMORY ALLOCATION. THEY ARE,


  1.  MALLOC( ) 
  2.  CALLOC( )
  3.  FREE( )
  4.  REALLOC( )




MALLOC

  THE NAME MALLOC STANDS FOR MEMORY ALLOCATION. A BLOCK OF MEMORY MAY BE ALLOCATED USING THE FUNCTION MALLOC. THE MALLOC FUNCTION RESERVES A BLOCK OF MEMORY OF SPECIFIED SIZE AND RETURNS A POINTER OF TYPE VOID.






SYNTAX :

PTR = ( CAST-TYPE * ) MALLOC ( BYTE-SIZE );


EXAMPLE :

Y = ( INT * ) MALLOC ( 100 * SIZE OF ( INT ) );



CALLOC

    THE CALLOC STANDS FOR CONTIGUOUS ALLOCATION. CALLOC IS ANOTHER MEMORY ALLOCATION FUNCTION NORMALLY USED FOR REQUESTING MEMORY SPACE AT RUN TIME FOR STORING DERIVED DATA TYPES SUCH AS ARRAYS AND STRUCTURES. CALLOC ALLOCATES MULTIPLE BLOCKS OF STORAGE.






SYNTAX :

PTR = ( CAST-TYPE ) CALLOC ( N, ELEMENT-SIZE );



EXAMPLE :

ST_PTR = ( STUDENT * ) CALLOC ( CLASS_SIZE, SIZEOF( STUDENT ) );




FREE

  FREE IS A DYNAMIC MEMORY CREATED WITH EITHER CALLOC OR MALLOC.WE CAN USE FREE EXPLICITLY TO RELEASE THE SPACE. IT FREES PREVIOUSLY ALLOCATED SPACE.






SYNTAX :

FREE ( PTR );



REALLOC

   THE NAME REALLOC STANDS FOR REALLOCATION. REALLOC MODIFIES THE SIZE OF PREVIOUSLY ALLOCATED SPACE. 






SYNTAX :

PTR = REALLOC ( PTR, NEWSIZE );



LINKED LIST

   A LINKED LIST IS A SET OF DYNAMICALLY ALLOCATED NODES, ARRANGED IN SUCH A WAY THAT EACH NODE CONTAINS ONE VALUE AND ONE POINTER. THE POINTER ALWAYS POINTS TO THE NEXT MEMBER OF THE LIST. IF THE POINTER IS NULL, THEN IT IS THE LAST NODE IN THE LIST. A LINKED LIST IS HELD USING A LOCAL POINTER VARIABLE WHICH POINTS TO THE FIRST ITEM OF THE LIST. IF THAT POINTER IS ALSO NULL, THEN THE LIST IS CONSIDERED AS EMPTY.






EXAMPLE :


STRUCT LINKEDLIST {

INT DATA;

STRUCT LINKEDLIST

*NEXT;

};













FOR MORE C PROGRAMS AND TUTORIALS PLEASE SUBSCRIBE MY YOUTUBE CHANNEL





CODE MASTER















Comments