 a subroutine) is completed, the program is expected to free up all the memory blocks allocated for it in order to make it available to other programs for use.In programming languages without a garbage collector (e.g.C and C++) it's up to the programmer to call the necessary memory releasing functions and to account for all the unused data within the program.