fork()
дублирует весь образ процесса. Все это. Таким образом, они распределяются дважды ... нет, они распределяются один раз для исполняемого образа, которых сейчас два, и нет, если вы ссылаетесь на один из родительских, он не будет содержать то же содержимое, что и содержимое ребенок, если вы не используете общую память.
В static
это ключевое слово означает (из ISO C99):
Объект, идентификатор которого объявлен
с внешней или внутренней связью, или
со спецификатором класса хранилища
static имеет статическую продолжительность хранения.
Его время жизни - это все исполнение
программы и ее сохраненное значение
инициализируется только один раз, до
запуск программы.
Это означает, что ваш буфер будет инициализирован один раз как часть процедуры запуска CRT, и это пространство исчезнет только при выходе. В этом случае это хранилище исчезает при выходе каждого ребенка.