Some applications, during run-time, require dynamic memory allocations to do the required data processing. If these allocations of memory are not returned to the operating system before the application terminates, no other application can reallocate this memory (this is known as a "memory leak"). With unmanaged code, it is the responsibility of the developer to deallocate memory before application expected or unexpected termination. With managed code, memory deallocation is taken care of by a process called Garbage Collection (GC). The GC process reduces the developer's burden of managing memory.