The process of allocating memory at run time is known as dynamic memory allocation. In computer science, dynamic memory allocation is the allocation of memory storage for use in a computer program during the run time of that program. It can be seen also as a way of distributing ownership of limited memory resources among many pieces of data and code.
Dynamically allocated memory exists until it is released either explicitly by the programmer, or by the garbage collector. This is in contrast to static memory allocation, which has a fixed duration. It is said that an object so allocated has a dynamic lifetime.