我有一个大缓冲区:
char *buf = malloc(1000000000); // 1GB
如果我派生了一个新进程,它将有一个与父进程共享内存的 buf,直到其中一个或另一个写入它。即使这样,内核也只需要分配一个新的 4KiB 块,其余的将继续共享。
我想制作一个 buf 的副本,但我只会更改一点副本。我想要不分叉的写时复制行为。(就像你在分叉时免费获得一样。)
这可能吗?
我有一个大缓冲区:
char *buf = malloc(1000000000); // 1GB
如果我派生了一个新进程,它将有一个与父进程共享内存的 buf,直到其中一个或另一个写入它。即使这样,内核也只需要分配一个新的 4KiB 块,其余的将继续共享。
我想制作一个 buf 的副本,但我只会更改一点副本。我想要不分叉的写时复制行为。(就像你在分叉时免费获得一样。)
这可能吗?