找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3786|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

最近51單片機(jī)很迷惑DATA

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:80506 發(fā)表于 2016-7-13 09:26 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
說(shuō)是DATA SIZE OVERFLOW,以前的程序可以達(dá)到128不報(bào)錯(cuò),這次怎么才121就溢出了
很頭疼的是每次上限都不一樣,不知道它背后的實(shí)質(zhì)老覺(jué)得不踏實(shí)
各位大神給點(diǎn)意見(jiàn)吧,
我的程序里面有變量uchar,bit,int,float也有數(shù)組,還有一大堆code數(shù)組,不知道哪些有影響了
先謝謝諸位了!

捕獲.JPG (33.87 KB, 下載次數(shù): 90)

溢出了

溢出了
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:130370 發(fā)表于 2016-7-13 22:01 | 只看該作者
轉(zhuǎn)自網(wǎng)絡(luò):
首先,我說(shuō)了我不能任意使用外部存貯空間,所以決不能讓編譯器將一些臨時(shí)變量放入idata or xdata。
其次,data 空間可以達(dá)到256,見(jiàn)頂樓的第三例,data空間使用了197.4而決無(wú)錯(cuò)誤。這是因?yàn)槟壳笆忻嫔洗蠖鄶?shù)的MCU都提供了256的data空間。
那么我的錯(cuò)誤出現(xiàn)在哪里呢?
這就是Keil的問(wèn)題了。當(dāng)編譯失敗時(shí),它不能給出完整正確的報(bào)告。所以它給出的:
Program Size: data=126.3 xdata=582 code=12091
就是不可信的。實(shí)際上我的data空間已經(jīng)遠(yuǎn)不止126.3了。
最后找到,我在多處定義了一個(gè)char buf[33];的字符串,而沒(méi)有使用它。
結(jié)論就出來(lái)了:
1、Keil的錯(cuò)誤報(bào)告不完整。
2、在Keil里最好不要留下定義而未使用的變量或函數(shù),編譯器無(wú)法合理的為之分配空間,而導(dǎo)致空間溢出。
回復(fù)

使用道具 舉報(bào)

板凳
ID:122633 發(fā)表于 2016-7-14 21:58 | 只看該作者
有個(gè)很簡(jiǎn)單的方法 點(diǎn)target option魔術(shù)棒 選target選項(xiàng)卡里Memory Model改成Large就可以了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表