A good answer might be:

dynamic memory allocation

Dynamic Memory Allocation

 

Dynamic memory allocation is when an executing program requests that the operating system give it a range of addresses in main memory that are not yet being used. The program then uses this memory for its own purpose. Usually the purpose is to add a node to a data structure. In object oriented languages dynamic memory allocation is used to get the memory for a new object.

The memory comes from above the static part of the data segment. Programs may both request memory and also return previously dynamically allocated memory. The heap may have "holes" in it where previously allocated memory has been made free and is now available for other purposes.

A new dynamic request for memory might return a range of addresses out of one of the holes. But it might not use up all the hole, so further dynamic requests might be satisfied out of the original hole. Keeping track of allocated and deallocated memory is complicated. A modern operating system does this as some of its services.



QUESTION 3:

Does the Stack Segment also have memory holes in it?