硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2890|回复: 4
收起左侧

[有问必答] MDK中全局变量是分配在RW-Data,还是ZI-Data

[复制链接]

57

主题

88

回帖

259

积分

高级会员

积分
259
发表于 2019-3-25 15:08:15 | 显示全部楼层 |阅读模式
大家好:
MDK编译后生成的RW-Data是指初始化的全局变量,比如定义了一个全局变量数组:

int array[1000];            //没有任何初始化数据
void main()
{
}

如何让这个数组不被分配到RW-Data区,而是分配到 ZI-Data区,这样在生成bin文件时会小得多?

谢谢!

回复

使用道具 举报

4

主题

139

回帖

151

积分

初级会员

积分
151
QQ
发表于 2019-3-25 15:48:01 | 显示全部楼层
没有赋值的全局变量是在ZI-Data里的,他在上电的时候会被统一赋值为0
回复

使用道具 举报

57

主题

88

回帖

259

积分

高级会员

积分
259
 楼主| 发表于 2019-3-25 16:50:26 | 显示全部楼层
qgyhd1234 发表于 2019-3-25 15:48
没有赋值的全局变量是在ZI-Data里的,他在上电的时候会被统一赋值为0

象上面这么定义,array[]应该被放在ZI-Data中,但是实实在在的被分配到了RW-Data区,增加了对FLASH空间的占用。

和其它别的地方有关系吗?
谢谢!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2019-3-26 03:00:55 | 显示全部楼层
程序里面对此变量的一些操作也会导致放到RW。一般RW区占用的空间都非常小的。大部分都是整到ZI了。
所以不用刻意去管理。
回复

使用道具 举报

4

主题

140

回帖

152

积分

初级会员

积分
152
发表于 2019-5-14 19:48:06 | 显示全部楼层
不初始化的话都放到的ZI段
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-18 00:24 , Processed in 0.278932 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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