C语言的内存分配

本文详细介绍了计算机内存的五大分区:栈区、堆区、全局区(静态区)、常量区和代码区。针对每个区域的特点进行了说明,如栈区遵循先进后出原则,堆区需手动管理内存,全局区用于存放全局变量等。

内存分为五大区:

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

 

转载于:https://www.cnblogs.com/sevenTian/p/4392701.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值