免费注册 查看新帖 |

Chinaunix

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

关于内存释放的问题; [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-11-10 16:45 |只看该作者 |倒序浏览
因为毕业设计的需要,小弟写了一个字符串切割函数,如下,其中pos代表起始位置范围从0开始,size代表要切割的长度,具体问题请看下面代码的注释,此函数忽略了异常情况的判断;
  1. char* My_SubStr(char* str, int pos, int size)
  2. {
  3.     char* temp=(char*)calloc(100,sizeof(char));
  4.     assert(temp != NULL);

  5.     strcpy(temp,str);

  6.     char* recall = temp+pos;
  7.     recall[size] = '\0';
  8.    
  9.     free(temp);  //在此处释放temp的空间了
  10.     temp=NULL;

  11.     return recall; //此处返回的指针是指向temp的,但是temp的空间已经释了,这样会不会有问题;
  12. }
复制代码
主要的问题就是上面那些,我自己已经做过验证了,我这么写是能够正确返回结果的,但是我不是很清楚的是temp的空间我已经释放掉了,而返回recall依旧指向那里,这样会不会有问题,小弟坐等各位的答案;

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
2 [报告]
发表于 2010-11-10 16:58 |只看该作者
当然有问题

论坛徽章:
0
3 [报告]
发表于 2010-11-10 17:03 |只看该作者
{:3_182:}结果保存在哪里了?

论坛徽章:
0
4 [报告]
发表于 2010-11-10 17:13 |只看该作者
本帖最后由 beyond_touch 于 2010-11-10 17:18 编辑

毕业设计写成这样

1. request a buffer as argument
2. allocate a chunk of dynamic memory as buffer(no free)
...

论坛徽章:
0
5 [报告]
发表于 2010-11-10 17:17 |只看该作者
当然有问题了,没有问题是侥幸(虽然每次都碰巧“正常”的可能性也很大)。

论坛徽章:
0
6 [报告]
发表于 2010-11-10 17:21 |只看该作者
这个叫做定时炸弹,没准啥时候就炸了。
gaosanwang 该用户已被删除
7 [报告]
发表于 2010-11-10 17:30 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
8 [报告]
发表于 2010-11-10 17:35 |只看该作者
void My_SubStr(char** str, int pos)
{
  *str = *str+pos;
}
gaosanwang 发表于 2010-11-10 17:30



    你这个不对,楼主后面还有个size参数。另外,楼主的函数不改变源串。

论坛徽章:
0
9 [报告]
发表于 2010-11-10 17:36 |只看该作者
回复 5# liubingqian


    那我把 temp设成一个全局变量来使用好吗?虽然说这个小函数是用来截取字符串的,但是不能改变输入字符串的内容,所以我只能对其副本进行操作;

论坛徽章:
0
10 [报告]
发表于 2010-11-10 17:37 |只看该作者
回复 8# Ray001


    那我把temp设成一个全局的变量来处理,这样设计好么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP