Статическое связывание
Для статически связанной программы библиотечный код объединяется с приложением, и почти все различия между программой и библиотекой теряются, т. Е. Каждый объект оказывается в том же разделе, что и аналогичный объект в основной программе. ,
Динамическое связывание
Для динамически связанных программ, если объект доступен для записи и не является автоматическим, страницы памяти будут выделяться в каждом процессе, который использует библиотеку, и раздел данных (или разделы) будет существовать только для динамически загружаемых библиотек.
Авто
Автоматические переменные распределяются в стеке одинаково для основной программы, статически связанных библиотечных функций и динамических библиотек. Процесс связывания не играет никакой роли в этом, скорее, сгенерированный код просто вычитает определенное количество из указателя стека для локальных автоматических требований места каждой подпрограммы.
Локальный не-авто
Локальные статические переменные распределяются компоновщиком таким образом, как статические и глобальные адреса модулей, они просто не имеют глобально связываемых имен.
Heap
Наконец, библиотечные подпрограммы будут связаны с одним и тем же malloc()
(или чем-то еще), и поэтому все выделения кучи будут выполняться одинаковым образом из одной и той же группы адресов.