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
}
---------------------
作者:珠3138
来源:CSDN
原文:https://blog.csdn.net/u011727691/article/details/66981143
版权声明:本文为博主原创文章,转载请附上博文链接!