搜索

你知道你的程序占了多大内存么?

[复制链接]
584|1
手机看帖
扫描二维码
随时随地手机跟帖
chenyilin|  楼主 | 2019-4-4 17:44 | 显示全部楼层 |阅读模式
在开发的过程中,如果遇到内存即将不足的时候,都会很关注这个代码到底占用了多少空间,经常有一个误区,hex 文件就是程序的大小(事实上并不是的)
现在用keil 来查看,计算这个代码占用的空间
在编译完成之后,总可以看到以下的信息提示:
下面解释下他们的含义:
Program Size: Code=x RO-data=x RW-data=x ZI-data=x 的含义
Code(代码): 程序所占用的FLASH大小,存储在FLASH.
RO-data(只读的数据): Read-only-data,程序定义的常量,如const型,存储在FLASH中。
RW-data(有初始值要求的、可读可写的数据):
Read-write-data,已经被初始化的变量,存储在FLASH中。初始化时RW-data从flash拷贝到SRAM。
ZI-data:Zero-Init-data,未被初始化的可读写变量,存储在SRAM中。ZI-data不会被算做代码里因为不会被初始化。
ROM(Flash) size = Code + RO-data + RW-data;
RAM size = RW-data + ZI-data
简单的说就是在烧写的时候是FLASH中的被占用的空间为:Code+RO Data+RW Data
程序运行的时候,芯片内部RAM使用的空间为: RW Data + ZI Data。

以上论述只代表个人观点,仅供参考学习。如有雷同,纯属巧合,可联系后台删除。万分感谢您的关注与支持!


来源: 你知道你的程序占了多大内存么?

使用特权

评论回复
lvben5d| | 2019-4-4 19:54 | 显示全部楼层
本帖最后由 lvben5d 于 2019-4-4 20:00 编辑

没有MMU的芯片,我个人认为HEAP一点都没实用意义。HEAP设置为0x0000    STACK这边跟你函数镶嵌层数,以及最大镶嵌下局部变量的总数有关系。 在你应用RAM足够下,余下都放STACK是个万无一失的小技巧。当然你总要先考虑好STACK够不够是吧。

使用特权

评论回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 我要提问 投诉建议 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

本版热帖

本版活跃用户

优质原创写原创,赢大奖

编辑推荐

  • 1 kk的回忆 得到打赏 ¥561.01
  • 2 火星国务卿 得到打赏 ¥518.00
  • 3 呐咯密密 得到打赏 ¥295.00
  • 4 小叶三千 得到打赏 ¥210.00
  • 5 jinglixixi 得到打赏 ¥190.00
  • 6 Gavin3389 得到打赏 ¥180.00
  • 7 神圣雅诗人 得到打赏 ¥170.00
  • 8 xyz549040622 得到打赏 ¥150.00
  • 9 linghz 得到打赏 ¥120.00
  • 10 137017878 得到打赏 ¥115.00
在线客服 快速回复 返回顶部 返回列表