什么情况下指针需要使用malloc分配内存,什么时候不需要

1.在c语言中,内存模型分为栈和堆。

2,这两种模型内存的方式是不同的,在栈中存放的变量是由系统自动管理的,在函数结束后系统会自动释放,不需要人为的进行任何操作。

3,而在堆中存放的是用户自己管理的内存,手动分配的,malloc建立,系统不会在函数体执行结束后自动释放,需要用户手动释放通过free函数。

当你对分配的空间进行自己的管理和释放需要使用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
}

展开阅读全文

没有更多推荐了,返回首页