Куча (и любая другая записываемая память - стек, BSS и т. Д.) Является отдельной для каждого процесса. Внутри процесса память может быть разделена между потоками, а может и не быть (в случае локального хранилища потоков). Это верно для вновь созданных приложений. Для fork
-еданного приложения память распределяется до тех пор, пока какой-либо процесс не выполнит запись в нее (копирование при записи).
Любая постоянная память (например, общая библиотека или многократное выполнение одного и того же приложения), вероятно, будет распределена между процессами. Это решение для исполняемого загрузчика ядра.
Статическая библиотека напрямую связана с исполняемым файлом, поэтому для каждого выполняемого исполняемого файла есть отдельная копия (если это не несколько экземпляров одного исполняемого файла).