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);是什么意思?
感谢您的回答! 展开
#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);是什么意思?
感谢您的回答! 展开
展开全部
在内存上有三个区域可以用来保存数据,一个是栈区、一个是堆区、一个是静态区,一般常用的定义变量是在栈区开辟,特点是系统开辟和释放;堆区的空间是由使用者来开辟空间,所以需要借助malloc开辟空间,free释放空间。p=(char *)malloc(sizeof(char)*20);malloc函数申请空间,sizeof(char) * 20表示malloc开辟空间字节数为20字节,malloc前的char * 表示开辟空间进行强制类型转换为需要开辟的空间的数据类型。free(p)函数表示释放由使用者开辟的空间,因为空间开辟是手动调用函数开辟的空间,所以释放空间也需要调用函数开辟。
展开全部
慢慢解释。。咳咳。。
malloc:C的内存分配函数,格式为malloc(字节数)
sizeof(char):char类型占用的内存字节数
sizeof(char)*20:20个char类型占用的内存字节数
(char *):malloc返回void *类型,这里进行类型强制转换,不然编译不过
free:C的内存释放函数,格式为free(malloc返回的内存指针)
够清楚了吧?
malloc:C的内存分配函数,格式为malloc(字节数)
sizeof(char):char类型占用的内存字节数
sizeof(char)*20:20个char类型占用的内存字节数
(char *):malloc返回void *类型,这里进行类型强制转换,不然编译不过
free:C的内存释放函数,格式为free(malloc返回的内存指针)
够清楚了吧?
追问
malloc()和free()是要配对出现的吗?
追答
如果你不想释放内存,可以不free
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询