Introduction of Free Pool Data Structure in C Language

Free Pool

         Dynamically the memory is allocated to the requesting data structure from an area of the main memory called Free Pool. If no cell is free, then no memory is allocated, results in memory allocation error. The dynamically created memory, when it is deleted, is periodically collected by the Operating System and added to the Free Pool. This process of adding deleted, unwanted, memory is called as “Garbage Collection”.

        The free pool in the main memory is treated as an empty linked list and it is called as AVAIL linked list. AVAIL is an external pointer similar to ROOT of a linked list, contains the address of the first free node of the AVAIL linked list. AVAIL address is allocated to NEW node when a new node is created means when memory for a new node is allocated i.e. when memory is requested. After the allocation of AVAIL address to NEW node, AVAIL is updated to point to the next free node of the AVAIL linked list. It can be shown by means of the below algorithmic notation’s statements.
                                       NEW <--- AVAIL
                                      AVAIL<--- AVAIL---> LINK
                AVAIL--->  LINK mean the LINK part of AVAIL node(---> is an arrow operator to access field of a struct pointer). INFO, the information part of node to be created or added to the list is copied to the INFO part of NEW node, NEW     INFO. Then the NEW node can be used for the purpose.

If a node is to be allocated with a new address, NEW is allocated with the address 402 pointed by AVAIL. So NEW points to 402 and INFO part of it is copied with the information to be stored in the node. The LINK part of it is initially copied with 0, an invalid address. In the mean time the AVAIL is updated to point to the next free node i.e. AVAIL  is incremented to point to the location (address)505.


Popular posts from this blog

difference between structure and union in C Language

Difference between Linear search and Binary Search in c language

Difference between static and dynamic websites