(Правка): Хорошо, вопрос несколько сбивает с толку, поскольку send
и recv
подразумевают межпроцессное взаимодействие, и, похоже, это не так, поэтому:
Краткий ответ: Да, не имеет значения, какая библиотека, статическая или динамическая, выполняет распределение. Это всегда для всего процесса.
Совместно используемая библиотека означает, что код хранится на диске один раз, но ничего не означает (что повлияет на использование) во время выполнения.
Распределение не имеет значения, делается ли оно из библиотеки или из кода приложения. У каждого процесса есть только одна куча, из которой он выполняет все выделения. Эта куча доступна для всего кода, запущенного в контексте этого процесса, и никогда не доступна для любого другого процесса (даже если используется тот же код). Фактически, сам operator new
живет в другой общей библиотеке (libstdc++.so
) и просто вызывает malloc
из еще одной общей библиотеки (libc.so
). И каждая общая библиотека появляется только один раз в каждом процессе, даже если от нее зависит более одной общей библиотеки (в некоторых случаях это может отличаться в Windows).
Во время выполнения указатель в одном адресном пространстве никогда не будет действительным в адресном пространстве другого процесса, поэтому передача указателей в сообщениях между процессами никогда не имеет смысла. Впрочем, между разными потоками одного и того же процесса все в порядке.