A large chunk of the address space of a process is a zone called "heap" whose address space is the range of the address growth direction of the process's. Data and. BSS to the low address portion of the dynamic library area
The heap can be understood to be a large chunk of memory in the process (the actual physical memory has been allocated, but not all of the address space is allocated physical memory, and its size is based on the system type and version) used to dynamically allocate memory space for programs in the process. Process by wholesale to the operating system a large chunk of the actual memory space to the GLIBC management to improve the efficiency of dynamic memory requests and releases when the program wants to request a relatively small amount of memory space, glibc from this large memory space, when the program to request the dynamic allocation of large memory space, Implemented by the operating system through appropriate system calls. Because the heap is characterised by the fact that the memory area can be dynamically (both timing and size are uncertain) to apply and release so this large chunk of physical memory is organized and managed in a way that usually has a few: 1) bidirectional linked List 2) Bitmap 3) Object pool
Because of the dynamic nature of this memory usage, the performance is slightly worse relative to the stack glibc is the GNU published LIBC library, the C runtime library, that is, the C language depends on the runtime environment, the C program (main function) is loaded into memory before it runs
Heap of Linux processes