malloc申请后用free释放内存

malloc申请一个字符串数组(大小自己输入)之后输入内容(可不存满)printf显示最后free全部释放掉(怎么释放?循环一个一个放?还是释放首地址即可)再想办法测试是... malloc申请一个字符串数组(大小自己输入)
之后输入内容(可不存满) printf显示
最后free全部释放掉 (怎么释放?循环一个一个放?还是释放首地址即可)
再想办法测试 是否释放成功 比如再次显示?
请高手给出例子 谢谢!

另外如果不及时释放 这块内存会被占到什么时候
展开
 我来答
华工精艺工1
2011-07-16 · TA获得超过176个赞
知道小有建树答主
回答量:98
采纳率:0%
帮助的人:84.3万
展开全部
释放首地址
ex
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char *get_menory()
{
char *p;
p=(char *)malloc(100);
return p;
}
void main()
{
char *str=NULL;
str=get_menory();
strcpy(str,"hello word");
printf(str);
free(str);
}
追问
free完了以后该怎么检验?有什么方法吗?
追答
检查,一般是不太好检查的,它是动态分配的
就算你没有free,程序基本上还是能通过的,只是会存在内存泄露,这个是操作系统的致命漏洞
所以malloc用起来一定要谨慎,不然很容易出现安全隐患
这个回复不知道你满意不满意
Storm代理
2023-07-25 广告
StormProxies是一家国内优质海外HTTP代理商,拥有一个庞大的IP资源池,覆盖200多个地区,IP数量大且匿名度高。其优点还包括超高并发、稳定高效、技术服务等特点,同时提供HTTP、HTTPS以及SOCKS5协议支持。此外,Sto... 点击进入详情页
本回答由Storm代理提供
lak121
2011-07-16 · TA获得超过106个赞
知道答主
回答量:24
采纳率:0%
帮助的人:16.6万
展开全部
free(数组名);
如上释放内存即可
不及时释放,最终会造成内存泄漏的
追问
仅仅加上数组名就行吗?保证全部释放?我看看大家都采用循环,一个一个释放啊
追答
由于free和malloc配对使用,malloc的时候,大小已经告诉系统了。 

free的时候,系统会比对一下这个地址,是不是malloc申请的,如果不是,不给释放

如果是的话,系统就知道要释放多大内存,因为malloc的时候,系统有记录的。

当然了,申请的地址,也记录了的,否则,就无法比对了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式