存储区划分
栈区:在函数内部定义的局部变量和局部数组,都存在栈区,栈区空间由系统管理,函数调用时开辟空间,函数执行结束后自动收回。
堆区:空间由开发人员手动开辟,手动收回。
全局(静态)区:存放全局变量和静态变量,空间有系统管理,程序执行开辟空间,程序结束空间收回,在程序执行期间一直存在。
常量区:存储常量。1.整型常量。2.浮点型常量。3.字符型常量。常量区的内容不能被更改,空间由系统管理,声明周期和应用程序声明周期一致。
代码区:存放程序指向的CPU指令,告诉计算计如何来执行程序。
堆区空间管理
// malloc:在堆区开辟size大小的空间
//
// void * :泛型,可以代表所有的指针类型。int *,char*,short*.
//
// free().释放堆区空间,只是标记删除,不清除内容。
char *p = malloc(8);//p存储区域空间是首地址
strcpy(p, "iphone");//往堆区空间上存储字符串
printf("%s\n",p);
free(p);//释放p指向的堆区空间,释放空间,只是标记删除,不清除内容。
p = NULL;//指向无效的空间,防止野指针。
printf("%s\n",p);