У меня есть большой буфер:
char *buf = malloc(1000000000); // 1GB
Если бы я разветвил новый процесс, у него был бы буфер, который разделял бы память с буфером родителя, пока один или другой не написал бы в него. Даже в этом случае ядру потребуется выделить только один новый блок размером 4 КБ, остальные останутся общими.
Я хотел бы сделать копию buf, но только немного изменю копию. Я бы хотел, чтобы поведение копирования при записи не разветвлялось. (Как вы получаете бесплатно при разветвлении.)
Возможно ли это?