- 论坛徽章:
- 0
|
1.代码
#include <unistd.h>
#include <stdio.h>
#include <errno.h>
main()
{
char *ptr;
pid_t child;
ptr=(char *)malloc(20);
child=fork() ;
if ( child<0 ) {
perror("fork err");
exit(-1);
} else if ( child==0 ) {
sleep(1);
printf("%d,%p,[%s]\n",getpid(),ptr,ptr);
exit(0);
} else {
strcpy(ptr,"hello");
printf("%d,%p,[%s]\n",getpid(),ptr,ptr);
wait(NULL);
exit(0);
}
}
|
执行结果是:
2200,403b44,[hello]
2201,403b44,[]
以前听说子进程如果不改变ptr的值,那么就不重新分配空间,地址是没有变化,可为什么取不到值,是不是403b44是内存相对地址?
2.还想问个问题,一个函数,fork之后子进程malloc,然后exit退出子进程,再return退出函数,之间没有free会不会内存泄露? |
|