C语言malloc函数和free函数?

#include<stdio.h>#include<stdlib.h>#include<string.h>main(){char*p;inti;p=(char*)mall... #include<stdio.h>
#include<stdlib.h>
#include<string.h>
main()
{
char *p;int i;
p=(char *)malloc(sizeof(char)*20);
strcpy(p,"welcome");
for(i=6;i>=0;i--)
putchar(*(p+i));
printf("\n");
free(p);
}
请问main函数中的p=(char *)malloc(sizeof(char)*20);和free(p);是什么意思?
感谢您的回答!
展开
 我来答
孤鸟天涯sky
2021-05-14
知道答主
回答量:48
采纳率:0%
帮助的人:5.2万
展开全部
在内存上有三个区域可以用来保存数据,一个是栈区、一个是堆区、一个是静态区,一般常用的定义变量是在栈区开辟,特点是系统开辟和释放;堆区的空间是由使用者来开辟空间,所以需要借助malloc开辟空间,free释放空间。p=(char *)malloc(sizeof(char)*20);malloc函数申请空间,sizeof(char) * 20表示malloc开辟空间字节数为20字节,malloc前的char * 表示开辟空间进行强制类型转换为需要开辟的空间的数据类型。free(p)函数表示释放由使用者开辟的空间,因为空间开辟是手动调用函数开辟的空间,所以释放空间也需要调用函数开辟。
哥德堡快递
2021-05-14 · TA获得超过1582个赞
知道小有建树答主
回答量:1039
采纳率:68%
帮助的人:382万
展开全部
慢慢解释。。咳咳。。
malloc:C的内存分配函数,格式为malloc(字节数)
sizeof(char):char类型占用的内存字节数
sizeof(char)*20:20个char类型占用的内存字节数
(char *):malloc返回void *类型,这里进行类型强制转换,不然编译不过
free:C的内存释放函数,格式为free(malloc返回的内存指针)

够清楚了吧?
追问
malloc()和free()是要配对出现的吗?
追答
如果你不想释放内存,可以不free
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式