c语言指针在什么情况下需要malloc,什么时候可以不这样,(被这个问题搞晕了)

 我来答
言玅
2014-06-01
知道答主
回答量:6
采纳率:0%
帮助的人:9.5万
展开全部
  1. C语言的内存模型包含有栈和堆两部分。

  2. 栈存放的是函数执行时的变量等,这部分变量由系统自动管理,比如 int a;等,这些变量在函数体结束时自动收回。

  3. 堆存放的是由用户自己手动管理的变量,这些变量是的由malloc函数建立,由 free函数释放。不会在函数体结束时自动收回。

追问
那什么时候必须用malloc呢?
int *p = NULL
int *p = (int*)malloc(sizeof(int))
我知道第一个是个空指针,第二个指向分配给它的内存的地址,但什么时候必须这样做呢?
追答
比如你想要随意分配内存空间,自己来管理和释放;或者你想要在函数执行结束时,所分配的变量还在,那就用malloc;
比如:
int * create()
{
int *p = (int*)malloc(sizeof(int));//此时在堆中建立了存放int的空间。

*p=2;
returen p;
}
int main()
{
int *a = create();//此时执行完后 刚刚在函数体内用malloc分配的空间还在,还存着2。
printf("%d",*a);//输出2
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式