找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3616|回复: 2
打印 上一主题 下一主题
收起左侧

最近51单片机很迷惑DATA

[复制链接]
跳转到指定楼层
楼主
说是DATA SIZE OVERFLOW,以前的程序可以达到128不报错,这次怎么才121就溢出了
很头疼的是每次上限都不一样,不知道它背后的实质老觉得不踏实
各位大神给点意见吧,
我的程序里面有变量uchar,bit,int,float也有数组,还有一大堆code数组,不知道哪些有影响了
先谢谢诸位了!

捕获.JPG (33.87 KB, 下载次数: 87)

溢出了

溢出了
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:130370 发表于 2016-7-13 22:01 | 只看该作者
转自网络:
首先,我说了我不能任意使用外部存贮空间,所以决不能让编译器将一些临时变量放入idata or xdata。
其次,data 空间可以达到256,见顶楼的第三例,data空间使用了197.4而决无错误。这是因为目前市面上大多数的MCU都提供了256的data空间。
那么我的错误出现在哪里呢?
这就是Keil的问题了。当编译失败时,它不能给出完整正确的报告。所以它给出的:
Program Size: data=126.3 xdata=582 code=12091
就是不可信的。实际上我的data空间已经远不止126.3了。
最后找到,我在多处定义了一个char buf[33];的字符串,而没有使用它。
结论就出来了:
1、Keil的错误报告不完整。
2、在Keil里最好不要留下定义而未使用的变量或函数,编译器无法合理的为之分配空间,而导致空间溢出。
回复

使用道具 举报

板凳
ID:122633 发表于 2016-7-14 21:58 | 只看该作者
有个很简单的方法 点target option魔术棒 选target选项卡里Memory Model改成Large就可以了
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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