The heap (and any other writable memory - stack, BSS, etc.) is separate for each process. As part of the process, memory may be shared between threads, and may not be so (in the case of local thread storage). This is true for newly created applications. For a fork -ed application, memory is shared until one of them writes (copy-on-write).
Any memory with constant access (for example, a shared library or running the same application several times) is likely to be shared between processes. This solution is for an executable kernel loader.
The static library is directly linked to the executable file, so for each executable file there is a separate copy (except for several instances of the same executable file).
source share