OpenEdv-开源电子网

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

ZI-DATA(未初始化的全局变量)占用内存太大

[复制链接]

1

主题

6

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2018-11-19
在线时间
3 小时
发表于 2018-11-22 21:24:13 | 显示全部楼层 |阅读模式
贴主是个新手,求大佬帮忙给些建议!谢谢      我综合图片显示实验和USB实验,实现将存储在USB中的图片读取出来,并显示在LCD上。
      编译后出现这个问题,显示ZI-DATA(未初始化的全局变量)占用内存太大,请问怎样解决呢!

@Q2]PL4ZEPE5A})K2}A`753.png


是不是应该去掉一些库呢?但作为一个新手,我有不知道怎样去,求帮助!!!




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

37

主题

246

帖子

0

精华

高级会员

Rank: 4

积分
775
金钱
775
注册时间
2016-9-10
在线时间
311 小时
发表于 2018-11-23 10:05:40 | 显示全部楼层
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2018-11-19
在线时间
3 小时
 楼主| 发表于 2018-11-23 10:50:59 | 显示全部楼层
1491430114 发表于 2018-11-23 10:05
这是用了内存管理吧

是的 这个ZI-data影响内存吗?
回复 支持 反对

使用道具 举报

37

主题

246

帖子

0

精华

高级会员

Rank: 4

积分
775
金钱
775
注册时间
2016-9-10
在线时间
311 小时
发表于 2018-11-23 10:57:28 | 显示全部楼层
黄友 发表于 2018-11-23 10:50
是的 这个ZI-data影响内存吗?

你内存管理初始化了多少这里就是多少,要想它小点把初始化的空间改小了就行
回复 支持 反对

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
6679
注册时间
2015-8-25
在线时间
1036 小时
发表于 2018-11-23 11:02:49 | 显示全部楼层
内存管理的数组放小点
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复 支持 反对

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10572
金钱
10572
注册时间
2017-2-18
在线时间
1914 小时
发表于 2018-11-23 12:27:10 | 显示全部楼层
使用的数组能减小就减小,全局变量能减小就减小
回复 支持 反对

使用道具 举报

22

主题

203

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
378
金钱
378
注册时间
2017-11-29
在线时间
135 小时
发表于 2018-11-23 20:02:58 来自手机 | 显示全部楼层
ZI00rtosmalloc棩ZISRAMУRTOSгheapZIС0ZIС
回复 支持 反对

使用道具 举报

22

主题

203

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
378
金钱
378
注册时间
2017-11-29
在线时间
135 小时
发表于 2018-11-23 20:03:40 来自手机 | 显示全部楼层
本帖最后由 wen619 于 2018-11-23 20:07 编辑
wen619 发表于 2018-11-23 20:02
ZI00rtosmalloc棩ZISRAMУRTOSгheapZIС0ZIС

程序运行时ZI域包括了初始值为0以及不为0的全局变量,栈空间(局部变量就在这)和堆空间(rtos使用malloc操作的内存),这三部分构成运行时ZI,他们都在SRAM中;所以RTOS中初始化heap的那个数组维数会影响ZI大小,不管初值是否为0的全局变量的数目也会影响ZI大小,局部变量的数目也会影响ZI大小。我理解对不对啊?
回复 支持 反对

使用道具 举报

2

主题

474

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6579
金钱
6579
注册时间
2018-6-27
在线时间
553 小时
发表于 2018-11-24 07:53:28 | 显示全部楼层
学习学习,学习学习。
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2018-11-19
在线时间
3 小时
 楼主| 发表于 2018-11-24 09:50:27 | 显示全部楼层
1491430114 发表于 2018-11-23 10:57
你内存管理初始化了多少这里就是多少,要想它小点把初始化的空间改小了就行

好的 谢谢
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2018-11-19
在线时间
3 小时
 楼主| 发表于 2018-11-24 09:51:02 | 显示全部楼层
szczyb1314 发表于 2018-11-23 11:02
内存管理的数组放小点

我要处理图片,所以数组小不了,不知道有没有什么方法可以解决呢
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2018-11-19
在线时间
3 小时
 楼主| 发表于 2018-11-24 09:51:43 | 显示全部楼层
peng1554 发表于 2018-11-23 12:27
使用的数组能减小就减小,全局变量能减小就减小

因为不太会,所以是综合例程里面的程序,不知道那些游泳那些没用,那些可以删掉
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2018-11-19
在线时间
3 小时
 楼主| 发表于 2018-11-24 09:52:41 | 显示全部楼层
wen619 发表于 2018-11-23 20:03
程序运行时ZI域包括了初始值为0以及不为0的全局变量,栈空间(局部变量就在这)和堆空间(rtos使用malloc ...

那这个比SRAM的内存还大 程序为什么还可以跑呢
回复 支持 反对

使用道具 举报

22

主题

203

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
378
金钱
378
注册时间
2017-11-29
在线时间
135 小时
发表于 2018-11-24 11:01:46 来自手机 | 显示全部楼层
黄友 发表于 2018-11-24 09:52
那这个比SRAM的内存还大 程序为什么还可以跑呢

你说你用了RTOS,那么RTOS初始化堆空间你设置了多少?是不是设置得太大而实际上并不需要那么大?这就导致zi域大小超过SRAM大小而你程序仍可以运行?
回复 支持 反对

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
6679
注册时间
2015-8-25
在线时间
1036 小时
发表于 2018-11-24 16:13:14 | 显示全部楼层
把你的数组全部用动态内存申请的方式改了,malloc和free要会用
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-2 11:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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