OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3227|回复: 4

如何查看程序占用内存大小?

[复制链接]

33

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
187
金钱
187
注册时间
2019-11-13
在线时间
39 小时
发表于 2020-6-18 16:12:22 | 显示全部楼层 |阅读模式
1金钱
1592467388.png
上图描述了程序所占的flash以及SRAM大小。但是在我编写的程序中含有全局变量:
float AttFromMagBuffer[30000*3] = {0}; //att buffer for straight angular getting
float MagDataBuffer[30000 * 3] = {0};   //mag buffer for straight angular getting
这种较大的内存占用,每一个都占用了30000*3*sizeof(float)=3.6e5字节,大概360K
但是编译出来如下图所示:
1592467752(1).png
即:Program Size: Code=37842 RO-data=1150 RW-data=208 ZI-data=6504  
编译器给出的Program Size好小呀,这是为什么,是我计算的不对,还是我对上面几个参数理解有问题。

最佳答案

查看完整内容[请看2#楼]

从ELF文件的角度说一下,ZI(Zero init-data)会放在ELF文件中的.bss段(可以看一下gnu工具链下的链接脚本),你的程序中 float AttFromMagBuffer[30000*3] = {0}; //att buffer for straight angular getting float MagDataBuffer[30000 * 3] = {0}; //mag buffer for straight angular getting 这两个“全局”数组,具有静态存储期,保证0初始化,这意味着它们被放到了ZI段,或者说是.bss段,而bss段比较特殊,它不占用程序 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

101

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2017-9-16
在线时间
80 小时
发表于 2020-6-18 16:12:23 | 显示全部楼层
本帖最后由 ISO14882 于 2020-6-19 21:18 编辑

从ELF文件的角度说一下,ZI(Zero init-data)会放在ELF文件中的.bss段(可以看一下gnu工具链下的链接脚本),你的程序中
float AttFromMagBuffer[30000*3] = {0}; //att buffer for straight angular getting
float MagDataBuffer[30000 * 3] = {0};   //mag buffer for straight angular getting
这两个“全局”数组,具有静态存储期,保证0初始化,这意味着它们被放到了ZI段,或者说是.bss段,而bss段比较特殊,它不占用程序映像的空间(在main函数运行前,这段内存会被某个特殊程序清零,裸机环境下就是启动代码中专门给bss段的ram填0的),如果有兴趣,可以用readelf工具查看各个段的信息。
另外,如果要把这两个对象放到data段,用非0的字面量初始化它们就好了。另外,程序运行时所需要的内存其实不一定能从程序本身看出来。比如说程序中包含了符合某些性质的递归函数,那么函数的调用栈深度会与递归深度有关,所需的内存就无法确定了
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2020-6-19 01:25:28 | 显示全部楼层
发你没用到这些吧?没用到被编译器自动优化了,用到才会显示出来。
回复

使用道具 举报

10

主题

778

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6731
金钱
6731
注册时间
2017-4-12
在线时间
1257 小时
发表于 2020-6-19 07:19:48 | 显示全部楼层
看.map文件
回复

使用道具 举报

33

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
187
金钱
187
注册时间
2019-11-13
在线时间
39 小时
 楼主| 发表于 2020-6-19 08:55:47 | 显示全部楼层
正点原子 发表于 2020-6-19 01:25
发你没用到这些吧?没用到被编译器自动优化了,用到才会显示出来。

哦哦,明白了,非常感谢大佬指导~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-1 08:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表