码迷,mamicode.com
首页 > 编程语言 > 详细

C语言的内存分配

时间:2015-04-04 20:58:47      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:

内存分为五大区:

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. 代码区:所编写的源文件,被编译过的二进制文件都是存放在代码区,代码区是内存中最小的一个区(用来存放代码本身)

 

C语言的内存分配

标签:

原文地址:http://www.cnblogs.com/sevenTian/p/4392701.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!