C语言改错题
#include<stdio.h>程序D9.c的功能是申请100个字节的内存空间,显示其首地址,然后释放申请到的内存空间。(每个found下一行又错误,求大神教教我。我确...
#include<stdio.h>
程序D9.c的功能是申请100个字节的内存空间,显示其首地址,然后释放申请到的内存空间。
(每个found下一行又错误,求大神教教我。我确实看不懂还没学,想自学)
#include<stdlib.h>
int main(void)
{
/*********Found************/
char pch[2];
/*********Found************/
if (pch = (char *)malloc(100) == NULL)
{
printf("malloc memory fail!\n");
return 1;
}
printf("%p\n", pch);
/*********Found************/
close(pch);
return 0;
} 展开
程序D9.c的功能是申请100个字节的内存空间,显示其首地址,然后释放申请到的内存空间。
(每个found下一行又错误,求大神教教我。我确实看不懂还没学,想自学)
#include<stdlib.h>
int main(void)
{
/*********Found************/
char pch[2];
/*********Found************/
if (pch = (char *)malloc(100) == NULL)
{
printf("malloc memory fail!\n");
return 1;
}
printf("%p\n", pch);
/*********Found************/
close(pch);
return 0;
} 展开
3个回答
2017-01-17 · 知道合伙人教育行家
天雨下凡
知道合伙人教育行家
向TA提问 私信TA
知道合伙人教育行家
采纳数:17564
获赞数:65157
爱电脑、爱数学、爱音乐; 熟悉VB、C/C++、JAVA; EXCEL与VBA有所研究…… 数学,一些会,一些被忘却……
向TA提问 私信TA
关注
展开全部
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
/*********Found************/
//char pch[2];
char * pch //应该用一个char型指针指向申请的空间的首地址
/*********Found************/
//if (pch = (char *)malloc(100) == NULL)
if ((pch = (char *)malloc(100)) == NULL) //漏了一对小括号
{
printf("malloc memory fail!\n");
return 1;
}
printf("%p\n", pch);
/*********Found************/
//close(pch);
free(pch); //释放指针pch指向的内存块,应该用free,不是close
return 0;
}
展开全部
第一部分,定义的必须是指针而不是数组,因为数组名是常量,不可更改。
第二部分,赋值运算符优先级低于关系运算符,所以赋值要打括号。
第三部分,应该用free(pch)来释放,free和malloc是一一对应的。
第二部分,赋值运算符优先级低于关系运算符,所以赋值要打括号。
第三部分,应该用free(pch)来释放,free和malloc是一一对应的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
/*********Found************/
//char pch[2];
char *pch;
/*********Found************/
if (pch = (char *)malloc(100) == NULL)
{
printf("malloc memory fail!\n");
return 1;
}
printf("%p\n", pch);
/*********Found************/
//close(pch);
free(pch);
我把错误的注释掉了,正确的语句写在下面。
追问
这里我们还没学到,所以都看不懂,你能告诉我if那段是什么意思吗?,还有那个什么free()释放内存又怎么理解?释放与不释放又什么区别?
追答
在内存中申请了100个字节的内存空间,返回这个内存空间的首地址,然后把这个首地址赋值给指针变量pch。
malloc()函数申请的内存空间是动态分配的,是在堆内存中分配的,而不是在栈内存(内存区相关的内容你自己查资料)。free()函数的作用就是把使用者自己申请的资源归还给系统,系统就可以把这部分内存给其他的变量使用。如果不释放,就会一直占着这块内存空间不放,系统是不会自动回收的,这就造成了内存泄漏,浪费了内存资源。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询