标题:内存问题 大侠请进
只看楼主
at445
Rank: 1
等 级:新手上路
帖 子:19
专家分:4
注 册:2011-6-14
结帖率:66.67%
已结贴  问题点数:20 回复次数:6 
内存问题 大侠请进
if(CRC_Hard_cal((u32 *)temp,508/4)!=U8_To_U32(&temp[509]))     //使用备份区域
{
     AT25DFXXXDRLIB_READ(DataAddr+i+1024*256UL,512,temp);   
}
temp是一个512个unsigned char的数组名
编译器用的keil 警告方式为
source\BootLoader\bootloader.c(130): warning: C3487E: read from variable 'temp' with offset out of bounds
搜索更多相关主题的帖子: 内存 BootLoader warning source 编译器 
2011-12-21 14:10
at445
Rank: 1
等 级:新手上路
帖 子:19
专家分:4
注 册:2011-6-14
得分:0 
不要沉啊
2011-12-21 14:31
at445
Rank: 1
等 级:新手上路
帖 子:19
专家分:4
注 册:2011-6-14
得分:0 
AT25DFXXXDRLIB_READ(u32 ReadAddr,u32 ReadLong,u8 *SaveBuf);
CRC_Hard_cal(u32 *ptr, u32 len)
#define U8_To_U32(U8BUF)  ( ((U8BUF)[0]<<24UL) | ((U8BUF)[1]<<16UL) | ((U8BUF)[2]<<8UL) | ((U8BUF)[3]) )
这是几个东东的原型
2011-12-21 14:35
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
得分:10 
看不懂,不知道前因后果,不过从字面上觉得这句
if(CRC_Hard_cal((u32*)temp,508/4)!=U8_To_U32(&temp[509]))     //使用备份区域
后面应该是temp[508]

总有那身价贱的人给作业贴回复完整的代码
2011-12-21 14:37
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
得分:10 
4楼指出了问题点,你放个509,还不越界?
#define U8_To_U32(U8BUF)  ( ((U8BUF)[0]<<24UL) | ((U8BUF)[1]<<16UL) | ((U8BUF)[2]<<8UL) | ((U8BUF)[3]) )
                          [509]                 [510]               [511]              [512]               

技术问题,请不要以短消息方式提问
2011-12-21 14:46
at445
Rank: 1
等 级:新手上路
帖 子:19
专家分:4
注 册:2011-6-14
得分:0 
回复 5楼 zaixuexi
Ok问题找到了,数组越界,不过你后面的分析也错了哦。这个宏写得很垃圾,引用后是数组的起始地址!
2011-12-22 15:29
at445
Rank: 1
等 级:新手上路
帖 子:19
专家分:4
注 册:2011-6-14
得分:0 
sorry!看飚了 你没错
2011-12-22 15:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-358294-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.719554 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved