C语言变量或者常量的存储位置在哪?

1、code、RW、ZI、RO认识

     code:代码存储,在ROM中,掉电不丢失;

     RW:可读可写变量,既在ROM中,又在RAM中存储;

     ZI:初始化为0的变量,存储在RAM中;

    RO:只读,存储在ROM中。

2、RAM、ROM统计公式

     RAM = RW  +  ZI;

     ROM = code  +  RW  +  RO;

示意图如下:

在这里插入图片描述

3、内存五大分区

      堆区(Heap):运行时程序new分配的,也就是应用程序申请的,由应用程序自行申请和释放。

      栈区(Stack):运行时为保持信息临时申请的,结束后释放,例如函数的参数、内部申请的非静态变量等信息。

      自由存储区:由malloc申请,free释放,系统层面管理。

      全局和静态存储区:全局变量和静态变量分配的区域,是否初始化,分配会位置会不一样。

      常量存储区:存储常量,例如字符串、const修饰变量等等。

4、内存分区与存储区域对应关系

     代码段(CODE DATA):执行的机器码组成,存储在ROM。

     只读数据段(RO DATA):存储程序中不可更改的数据,常量存储区属于这里,存储在ROM。

     已初始化可读可写数据段(RW DATA):程序中已定义,并且进行初始化的数据,全局和静态存储区中已经初始化的数据在这里存储,既存储

在ROM,又存储在RAM。

     未初始化数据段(BSS):程序中已定义,并且未初始化的数据,全局和静态存储区中未初始化的数据在这里存储,存储在RAM内。

     堆和栈:程序运行时,从RAM中申请分配的。

    问题:const修饰的变量是如何存储的?

5、常见一些情况的存储剖析

  • 8
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值