A heap is the most common way to implement dynamic memory allocation. A typical heap usage scenario involves when you do not know how much memory is allocated before runtime, or if the required memory is too large to be allocated on the stack.
A process can contain one or more heaps. Most processes have more than heaps. For example, on Windows, a process can have a bunch of default processes, a bunch of CRT, and an application can call the Windows API to create its own heap (using the HeapCreate API).
When the process is created, the OS will create a new heap for it called the "Default Process Heap", which is actually rarely used in most cases. When we call new / delete and malloc / free, we actually use a bunch of CRT.
Windows , / . , , .
C/++. , Windows.