StephenCCCurry 2022-09-11 20:28 采纳率: 0%
浏览 61
已结题

关于#c语言#的问题:C语言程序设计时变量的存储位置C语言程序设计时变量的存储位置

img


C语言程序设计时变量的存储位置
C语言程序设计时变量的存储位置

  • 写回答

2条回答 默认 最新

  • 老中医─森 2022-09-11 20:53
    关注

    code、RW、ZI、RO认识
    code:代码存储,在ROM中,掉电不丢失;
    RW:可读可写变量,既在ROM中,又在RAM中存储;
    ZI:初始化为0的变量,存储在RAM中;
    RO:只读,存储在ROM中。
    2、RAM、ROM统计公式
    RAM = RW + ZI;
    ROM = code + RW + RO;
    示意图如下:

    img


    3、内存五大分区
    堆区(Heap):运行时程序new分配的,也就是应用程序申请的,由应用程序自行申请和释放。
    栈区(Stack):运行时为保持信息临时申请的,结束后释放,例如函数的参数、内部申请的非静态变量等信息。
    自由存储区:由malloc申请,free释放,系统层面管理。
    全局和静态存储区:全局变量和静态变量分配的区域,是否初始化,分配会位置会不一样。
    常量存储区:存储常量,例如字符串、const修饰变量等等。
    4、内存分区与存储区域对应关系
    代码段(CODE DATA):执行的机器码组成,存储在ROM。
    只读数据段(RO DATA):存储程序中不可更改的数据,常量存储区属于这里,存储在ROM。
    已初始化可读可写数据段(RW DATA):程序中已定义,并且进行初始化的数据,全局和静态存储区中已经初始化的数据在这里存储,既存储
    在ROM,又存储在RAM。
    未初始化数据段(BSS):程序中已定义,并且未初始化的数据,全局和静态存储区中未初始化的数据在这里存储,存储在RAM内。
    堆和栈:程序运行时,从RAM中申请分配的。
    问题:const修饰的变量是如何存储的?

    评论

报告相同问题?

问题事件

  • 系统已结题 9月19日
  • 创建了问题 9月11日