| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2044 人关注过本帖
标题:在函数里申请的内存怎么在return后释放
只看楼主 加入收藏
fjfjklds
Rank: 1
等 级:新手上路
帖 子:23
专家分:5
注 册:2015-9-25
结帖率:57.14%
收藏
已结贴  问题点数:20 回复次数:6 
在函数里申请的内存怎么在return后释放
    char *getchar(){
        char *p;
        p=(char*)malloc(sizeof(char));
        scanf("%s",p);
        return p;
}
想使用没参数的函数直接输入字符串
1.但不知道申请了的内存怎么之后释放,
2.而且这个被输入的变量只能是指针,想请问别人那些可以char *p=getchar();和char p[n]=getchar();那样的函数要怎么实现
                                                                        
搜索更多相关主题的帖子: return 字符串 而且 
2016-03-09 23:22
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
用free()釋放返回的指針所指向的內存。

授人以渔,不授人以鱼。
2016-03-09 23:40
fjfjklds
Rank: 1
等 级:新手上路
帖 子:23
专家分:5
注 册:2015-9-25
收藏
得分:0 
回复 2楼 TonyDeng
但是释放的话不应该是在函数内进行的吗?如果在函数外free就没用函数的必要了,但是在函数内又不知该怎么释放
我看别人都是直接在主函数中char *a=getchar();后面没释放的动作
2016-03-09 23:51
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
但是释放的话不应该是在函数内进行的吗?如果在函数外free就没用函数的必要了,但是在函数内又不知该怎么释放
 我看别人都是直接在主函数中char *a=getchar();后面没释放的动作

這個別人拖出去打靶不用法庭判的了

授人以渔,不授人以鱼。
2016-03-09 23:53
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
如果在函數中申請、在函數中釋放,那麽根本就不必要用malloc(),即無需在堆中請求內存(除非這塊内存的尺寸很大)。用malloc()的目的就是要在全局性質的堆數據區上拿內存,而代價是你自己管理內存的釋放。你要明白,針無兩頭尖,使用堆內存的好處必須付出管理維護複雜的代價。

授人以渔,不授人以鱼。
2016-03-09 23:58
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
實際上對現代的操作系統來説,不釋放動態申請的內存也是沒問題的,因爲在進程結束之後操作系統會收回它所有佔用的內存,但作爲傳統,或良好習慣,或考慮一定程度的可移植性,釋放這些內存不是壞事,但這種管理行爲很不好做、很不容易做好。

授人以渔,不授人以鱼。
2016-03-10 00:23
foxeer
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:107
专家分:136
注 册:2015-12-29
收藏
得分:10 
楼主你这个在函数调用完成后,在main函数中直接free(getchar)就可以了,绝对不能再函数内进行释放,应在函数调用完成后释放。
2016-03-10 14:00
快速回复:在函数里申请的内存怎么在return后释放
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031022 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved