c语言内存分区

        在c语言中内存可大致分为5个分区分别为以下五种:栈区,堆区,全局静态区,常量区,代码区。

一.  栈区

1.存储局部变量  
局部变量 :

定义在作用域内的变量 或 函数的形参
局部变量生命周期: 定义时出生 作用域结束时消亡 
适用范围 所声明的作用域内
函数结束后主函数第一时间也可以输出,是赶在系统释放内存之前输出的,但是不要用,有风险

2. 栈区由编译器自动分配释放,由操作系统自动管理,无须手动管理。
3. 栈区上的内容只在函数范围内存在,当函数运行结束,这些内容也会自动被销毁。
4. 栈区按内存地址由高到低方向生长,其最大大小由编译时确定。
5. 栈区是先进后出原则,即先进去的被堵在屋里的最里面,后进去的在门口,释放的时候门口的先出去。

二. 堆区  需要手动申请

1. 由程序员分配内存和释放。
2. 生命周期  手动申请时出生 手动释放消亡  

        申请使用malloc()函数  

        参数size_t是分配的字节大小。
        返回值是一个void*型的指针,该指针指向分配空间的首地址。

        使用free()函数,但是只能释放一次

        参数是开辟空间的首地址
3. 特性 空间是连续的

三. 全局静态区

通常是用于那些在编译期间就能确定存储大小的变量的存储区,但它用于的是在整个程序运行期间都可见的全局变量静态变量

        1. 全局变量
                生命周期  程序运行时出生  程序结束时消亡
                使用范围  整个程序
                特性 默认初始化为0 

        2.  静态变量   static 修饰
                生命周期 程序运行时出生, 程序结束时消亡
                适用范围 全局静态变量  是所在文件内  extern 外部引用
        3. 局部静态变量 所在作用域内
                特性  默认初始化为0 只初始化一次

四. 常量区

字符串、数字等常量存放在常量区。

const修饰的全局变量存放在常量区。

程序运行期间,常量区的内容不可以被修改。

五. 代码区

程序执行代码存放在代码区,不可修改。

字符串常量和define定义的常量也有可能存放在代码区

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值