//stack(栈)
//当调用getString函数的时候,会为string字符串在栈区分配7个字节的内存,当调用函数以后,系统会自动回收内存
//所以:***不能以一个栈区的空间作为函数的返回值
char string[] = "iPhone";
//静态变量
//1,只初始化一次(只会开辟一次内存空间)
//2,如果没有赋初值,默认为0(静态变量独有的)
//3,空间一旦被开辟,就不会释放,直到程序结束
static int a = 10;
// 动态内存分配的目的:合理的使用内存(内存是有限的)
// 存储区的划分
// 1,栈区:存储是以栈(先进后出)的结构存储,局部变量(在函数内部定义的变量)和形式参数(函数的参数)存放到栈区,调用函数的时候,为局部变量和形式参数分配内存,调出函数后,系统收回为这个函数分配的内存
// 2,堆区:是由开发人员手动申请,手动释放,需要人工管理
// 3,静态区(全局区):全局变量(定义在函数外部的变量)和静态变量(有static修饰的变量),存放在静态区,一旦开辟内存空间,就不会释放,直到程序结束
// 4,常量区:存储:整型常量,字符常量,浮点常量,字符串常量,常量区的内容不能被修改
// 5,代码区:存放CPU指令
// printf("%s", getString());//无输出,调用之前函数已经被系统回收
|
|