| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1044 人关注过本帖
标题:内存问题 大侠请进
只看楼主 加入收藏
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
快速回复:内存问题 大侠请进
数据加载中...
 
   



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

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