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