• 变量、内存区域、MDK文件(map、htm)


    变量分为:局部变量和全局变量

    局部变量:函数体内部定义的变量,作用域为函数内部,static声明(静态局部变量)该变量则函数调用结束后不消失而保留值,分配的存储空间不释放。

    全局变量:函数体外部定义的变量,作用域为文件内部,static声明(静态全局变量)该变量则只能在本文件(声明该变量的文件)中被调用。

    变量声明分为:定义性声明(int a)需要分配存储空间;引用性声明(extern int a)不需要分配存储空间

    内存区域划分:

    1、栈区:由高地址向低地址增长,由CPU硬件实现,用于存放局部变量、函数形参(自右向左入栈)、函数调用时的现场保护和返回地址,由编译器自动分配和释放

    2、堆区:由低地址向高地址增长,由软件实现,用于动态内存分配(malloc和free等)

    3、静态存储区:存放全局变量和静态变量(全局区)、存放常量字符串(文字常量区)

    4、程序代码区:存放函数二进制代码

    MAP文件相关概念:

    1、Section:描述映像文件的代码和数据块

    2、RO:Read-Only缩写,包括RO-data(只读常量)和RO-code(只读代码)

    3、RW:Read-Write缩写,主要是RW-data,已初始化变量

    4、ZI:Zero-Initialized缩写,主要是ZI-data,未初始化变量

    5、.text:等同RO-code

    6、.constdata:等同RO-data

    7、.bss:等同ZI-data

    8、.data:等同RW-data

    烧写时FLASH占用空间Code+RO-data+RW-data

    运行时RAM占用空间RW-data+ZI-data;

    htm文件可以查看被调用函数的栈stack使用情况,调试和OS中分配任务stack时有用

    从nordic 芯片的来看。

    .data 初始化的全局变量为其他址

    .bss 初始化全局变量量为0

    Common symbol  未进行初始化的全局变量

    .rodata 是属于字符串常量,可以用const 值将数据放到flas里面

  • 相关阅读:
    JSONModel的使用
    gitHub那些优秀的库和想要实现的效果
    CALayer的mask属性
    透明的UITableView
    iOS 常用随机数
    UIView的 形变属性transform
    ARGB色彩模式
    封闭折线图形的渐变色
    iOS系统日历选择问题
    每天积累一点新知识
  • 原文地址:https://www.cnblogs.com/jack-hzm/p/10539028.html
Copyright © 2020-2023  润新知