C语言的内存分配

内存分为五大区:程序员

1.栈区:在函数内部声明的变量都存在栈区,只管申请,系统会帮咱们自动释放,释放的时间是做用域结束,遵循先进后出(first in last off(FILO)),栈的开辟是连续的,不会形成内存碎片,效率比较高(用来存放临时变量和正在运行的函数,当函数被调用的时候就会入栈,执行完毕的时候就会出栈)函数

 

     

 

2. 堆区:堆区是五个区中占用比例最大的一个区,堆区须要咱们手动的开辟,手动释放,遵循队列的原则(first in first off(FIFO))(凡是用malloc,和alloc开辟的内存空间都是在堆里面的,而且堆里面的内存空间须要程序员本身管理,有开辟就必需要有释放,否则会内存泄露)spa

 

     

 

3.全局区:(静态区)存放的是全局变量和静态变量,生命周期长,一直到程序结束。静态变量是用static修饰的变量,只初始化一次(静态区:static修饰的变量都在该区)生命周期

 

 

1.static在静态区开辟内存空间队列

 2.static修饰的静态变量只初始化一次内存

3.生命周期为整个应用程序作用域

4.static修饰变量编译

     (1)static修饰的变量储存在静态区,其生命周期为整个应用程序ast

     (2)static修饰的全局变量能够被其余程序使用,没有被static修饰的全局变量只能在源文件中使用效率

     (3)static修饰的局部变量,虽然生命周期是整个应用程序周期,可是也只能被做用域内的函数和变量使用

5.static修饰的函数,只能被源文件使用,没有被static修饰的函数,能够跨文件使用,正好和static修饰的变量相反

 

4. 常量区:主要存放都是一个常量,例如:"hello",'h',78,.....常量区的数据不能够被修改(用来存放程序中的常量例如:2,4,5)

 

     

 

5. 代码区:所编写的源文件,被编译过的二进制文件都是存放在代码区,代码区是内存中最小的一个区(用来存放代码自己)

相关文章
相关标签/搜索