#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 16
int main()
{
char *data;
data=(char *)malloc(SIZE);
if(data==NULL)
{
printf("mallco failed!\n");
exit(1);
}
char *str="test data";
strcpy(data,str);
printf("before fork,the data is: %s\n",data);
printf("before fork the addr of mem is: %p\n",data);
int pid;
if((pid=fork())==0)//父进程查看分配的内存信息
{
strcpy(data,"I am parent");
printf("In parent,the data is: %s\n",data);
printf("In parent,the addr of mem is: %p\n",data);
sleep(10);
printf("In parent,the data is: %s\n",data);
printf("In parent,the addr of mem is: %p\n",data);
}
else
{
sleep(5);
strcpy(data,"I am child");
printf("In child,the data is: %s\n",data);
printf("In child,the addr of mem is: %p\n",data);
}
free(data);
return 0;
}

该博客通过示例展示了在Linux环境中,父子进程在fork后使用malloc分配的内存区域是独立的。尽管它们拥有相同的内存地址,但实际存储的内容互不干扰,体现了进程间的内存隔离特性。父进程写入"I am parent",子进程写入"I am child",证实了各自内存空间的独立性。
最低0.47元/天 解锁文章
201





