可编程序中的存储区域基本上分为:静态存储区,栈区,堆区,代码区。
1.静态存储区(全局存储区):该块内存在程序编译期间就已经分配好,并且在程序运行期间都一直存在,主要用于存储静态数据,全局数据和常量。
被static修饰的局部变量存储在这里,普通的局部变量存储在栈里。
2.栈:编译器在需要的时候再分配内存,里面通常存储普通的变量,并且它的内存分配运算是内置于处理器上的,执行效率很高。
3.堆:它的内存由程序管理,存储的一般时new,alloc 出来的对象。动态分配内存。
4.代码区:存放二进制代码。运行程序就是执行代码,代码想要执行就得加载到内存中。
4.文字常量区:存储程序中使用到的常量。程序运行结束后由系统释放。
关键字
static:
1.被static修饰的变量和普通变量有什么区别?
static修饰的变量存储在静态存储区,程序运行期间一直存在,普通的变量存储在栈中,它的生命周期跟生命它的函数周期一样。
2.被static修饰的全局变量和普通的全局变量有什么区别?
他们都存储在静态存储区,被static修饰的全局变量他只在声明它的文件中有效,普通的全局变量可以在其他的文件中调用。