免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2430 | 回复: 9
打印 上一主题 下一主题

[C] fork后的为什么子进程malloc失败? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-21 16:42 |只看该作者 |倒序浏览
RT,这是为什么?
还有点疑问:子进程结束后,从父进程拷贝来的数据就全部都释放了?

main()
{
        USER *userTable;
        initUserTable(userTable);
        .....
        while(1)
        {
                clilen=sizeof(addrcli);
                connfd=accept(listenfd,(struct sockaddr *)&addrcli,&clilen);
                if( (childpid=fork()) > 0 )
                {
                        close(connfd);
                        continue;
                }
                else if (childpid==0)
                {
                        doit(userTable,connfd,&addrcli);
                        close(connfd);
                }
        }
}
int doit(USER *userTable,int connfd,struct sockaddr_in *addr)
{
        USER *user;
        if (!(user=(USER *)malloc(sizeof(USER))));
        {
                test("malloc bad\n");//打印信息
                return -1;
        }
        ....
}


[ 本帖最后由 hackqiang 于 2009-12-21 17:13 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-12-21 16:46 |只看该作者
上代码!

论坛徽章:
0
3 [报告]
发表于 2009-12-21 16:55 |只看该作者

论坛徽章:
0
4 [报告]
发表于 2009-12-21 17:13 |只看该作者
代码来了。。

论坛徽章:
0
5 [报告]
发表于 2009-12-21 17:23 |只看该作者
不会,除非是类似浅复制那种,,,
你在父进程里malloc了一块内存,然后才fork,那肯定不会在子进程里给你重新分配内存。。。。

论坛徽章:
0
6 [报告]
发表于 2009-12-21 17:31 |只看该作者
父中分配的内存,在子中一样存在(占同个页),这时不管那个进程写了这个页,都是COW

论坛徽章:
0
7 [报告]
发表于 2009-12-21 17:33 |只看该作者
if (!(user=(USER *)malloc(sizeof(USER))));
注意后面的 分号!

论坛徽章:
0
8 [报告]
发表于 2009-12-21 17:48 |只看该作者
原帖由 zliming 于 2009-12-21 17:33 发表
if (!(user=(USER *)malloc(sizeof(USER))));
注意后面的 分号!

杯具阿,则磨我两天的问题。

论坛徽章:
0
9 [报告]
发表于 2009-12-21 19:59 |只看该作者
手多了。

论坛徽章:
0
10 [报告]
发表于 2009-12-21 22:44 |只看该作者
原帖由 zliming 于 2009-12-21 17:33 发表
if (!(user=(USER *)malloc(sizeof(USER))));
注意后面的 分号!

不知道为什么关于“;”,在vc6和gcc环境下报错提示不一样

曾经在移植的时候,由于缺少一个“;”费了老半天劲
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP