搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 在函数里申请的内存怎么在return后释放
标题:
在函数里申请的内存怎么在return后释放
只看楼主
fjfjklds
等 级:
新手上路
帖 子: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
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
2
楼
得分:0
用free()釋放返回的指針所指向的內存。
授人以渔,不授人以鱼。
2016-03-09 23:40
fjfjklds
等 级:
新手上路
帖 子:23
专家分:5
注 册:2015-9-25
第
3
楼
得分:0
回复 2楼 TonyDeng
但是释放的话不应该是在函数内进行的吗?如果在函数外free就没用函数的必要了,但是在函数内又不知该怎么释放
我看别人都是直接在主函数中char *a=getchar();后面没释放的动作
2016-03-09 23:51
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
4
楼
得分:0
但是释放的话不应该是在函数内进行的吗?如果在函数外free就没用函数的必要了,但是在函数内又不知该怎么释放
我看别人都是直接在主函数中
char *a=getchar();
后面没释放的动作
這個別人拖出去打靶不用法庭判的了
授人以渔,不授人以鱼。
2016-03-09 23:53
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
5
楼
得分:0
如果在函數中申請、在函數中釋放,那麽根本就不必要用malloc(),即無需在堆中請求內存(除非這塊内存的尺寸很大)。用malloc()的目的就是要在全局性質的堆數據區上拿內存,而代價是你自己管理內存的釋放。你要明白,針無兩頭尖,使用堆內存的好處必須付出管理維護複雜的代價。
授人以渔,不授人以鱼。
2016-03-09 23:58
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
6
楼
得分:0
實際上對現代的操作系統來説,不釋放動態申請的內存也是沒問題的,因爲在進程結束之後操作系統會收回它所有佔用的內存,但作爲傳統,或良好習慣,或考慮一定程度的可移植性,釋放這些內存不是壞事,但這種管理行爲很不好做、很不容易做好。
授人以渔,不授人以鱼。
2016-03-10 00:23
foxeer
等 级:
论坛游侠
帖 子:107
专家分:136
注 册:2015-12-29
第
7
楼
得分:10
楼主你这个在函数调用完成后,在main函数中直接free(getchar)就可以了,绝对不能再函数内进行释放,应在函数调用完成后释放。
2016-03-10 14:00
7
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-462317-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 2.196595 second(s), 9 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved