免费注册 查看新帖 |

Chinaunix

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

请教C内存溢出的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-05-12 13:41 |只看该作者 |倒序浏览
char *convert(unsigned int i)
{
        char *res;
        res=(char *)malloc(sizeof("00");

        if(i<10)
        {
                sprintf(res,"0%1d",i);
                return res;
        }
        else if(i<100)
        {
                sprintf(res,"%2d",i);
                return res;
        }
        else
        {
                sprintf(res,"00";
                return res;       
        }
       
               
}

这个函数在调用后会产生溢出,怎样才能解决?

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2005-05-12 13:45 |只看该作者

请教C内存溢出的问题

res=(char *)malloc(sizeof("00");
少了一位
res=(char *)malloc(3);

论坛徽章:
0
3 [报告]
发表于 2005-05-12 13:47 |只看该作者

请教C内存溢出的问题

malloc申请的加大一点呗。
还有,最好用snprintf

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2005-05-12 13:47 |只看该作者

请教C内存溢出的问题

res=(char *)malloc(1024×1024×1024);

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
5 [报告]
发表于 2005-05-12 13:48 |只看该作者

请教C内存溢出的问题

看错了,应该不会溢出

论坛徽章:
0
6 [报告]
发表于 2005-05-12 13:49 |只看该作者

请教C内存溢出的问题

原帖由 "yuxh" 发表:
res=(char *)malloc(sizeof("00");
少了一位
res=(char *)malloc(3);


楼上回答不对,我试了下
printf("%d\n", sizeof("00");
输出是3...

回帖的速度真快...

论坛徽章:
0
7 [报告]
发表于 2005-05-12 13:55 |只看该作者

请教C内存溢出的问题

这个函数没问题,我试了下
楼主大概是调用了convert后没释放内存吧...

char *ret;

ret = convert(1);
printf("[%s]\n", ret);
free(ret); //玩弄大家的感情

论坛徽章:
0
8 [报告]
发表于 2005-05-12 13:59 |只看该作者

请教C内存溢出的问题

是没释放,和分配空间无关。
主要是想请教这种情况下怎样定义那个res,是定义static还是怎样?

论坛徽章:
0
9 [报告]
发表于 2005-05-12 14:02 |只看该作者

请教C内存溢出的问题

楼主,话要一次说完...
大家都白忙了
最好自己传数组进去
char result[3];
void convert(char *out, int i)...
别搞动态分配了,没有必要

论坛徽章:
0
10 [报告]
发表于 2005-05-12 14:37 |只看该作者

请教C内存溢出的问题

原帖由 "virmin" 发表:
ret);
free(ret); //玩弄大家的感情
这样还是有溢出,res还是没有释放。主要想搞明白如何用指针实现这个。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP