标签:
内存分为五大区:
1.栈区:在函数内部声明的变量都存在栈区,只管申请,系统会帮我们自动释放,释放的时间是作用域结束,遵循先进后出(first in last off(FILO)),栈的开辟是连续的,不会造成内存碎片,效率比较高(用来存放临时变量和正在运行的函数,当函数被调用的时候就会入栈,执行完毕的时候就会出栈)
2. 堆区:堆区是五个区中占用比例最大的一个区,堆区需要我们手动的开辟,手动释放,遵循队列的原则(first in first off(FIFO))(凡是用malloc,和alloc开辟的内存空间都是在堆里面的,并且堆里面的内存空间需要程序员自己管理,有开辟就必须要有释放,不然会内存泄露)
3.全局区:(静态区)存放的是全局变量和静态变量,生命周期长,一直到程序结束。静态变量是用static修饰的变量,只初始化一次(静态区:static修饰的变量都在该区)
1.static在静态区开辟内存空间
2.static修饰的静态变量只初始化一次
3.生命周期为整个应用程序
4.static修饰变量
(1)static修饰的变量储存在静态区,其生命周期为整个应用程序
(2)static修饰的全局变量可以被其他程序使用,没有被static修饰的全局变量只能在源文件中使用
(3)static修饰的局部变量,虽然生命周期是整个应用程序周期,但是也只能被作用域内的函数和变量使用
5.static修饰的函数,只能被源文件使用,没有被static修饰的函数,可以跨文件使用,正好和static修饰的变量相反
4. 常量区:主要存放都是一个常量,例如:"hello",‘h‘,78,.....常量区的数据不可以被修改(用来存放程序中的常量例如:2,4,5)
5. 代码区:所编写的源文件,被编译过的二进制文件都是存放在代码区,代码区是内存中最小的一个区(用来存放代码本身)
标签:
原文地址:http://www.cnblogs.com/sevenTian/p/4392701.html