2
int *g=NULL;

main()
{

g = malloc(40000000);//allocate 40MB in the parent

fork();

while(1);

}

如果我运行这个程序并在顶部观看相同的内容,我会看到分配给父级和子级的 40MB 内存。

但是在后台我希望写入时的副本可以防止内存的双重分配,因为我还没有触及它..

注释?COW 是否特定于某些平台?如何测试 COW 是否确实是 fork 的方式?

4

1 回答 1

4

从逻辑上讲,子进程分配了 40MB 内存,它只是在修改它之前不会获得单独的副本。

COW 操作不会更改分配给进程的资源量。相反,它只是防止在物理上复制它们,直到进行编辑,此时新进程需要单独的副本。

于 2014-03-07T18:43:08.067 回答