OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4227|回复: 1

如何给void FSMC_SRAM_ReadBuffer(u8* pBuffer,u32 ReadAddr,u32 n)函数加保险

[复制链接]

94

主题

260

帖子

0

精华

高级会员

Rank: 4

积分
650
金钱
650
注册时间
2013-10-23
在线时间
48 小时
发表于 2014-10-20 20:36:37 | 显示全部楼层 |阅读模式
5金钱

void FSMC_SRAM_ReadBuffer(u8* pBuffer,u32 ReadAddr,u32 n),这个函数假如调用的时候n大于ReadAddr指针所指内存的总字节数,则程序会导致意想不到的后果,如果传过来的实参是一个指向数组或字符串的指针,倒是可以用strlen()函数求得ReadAddr的长度然后与n作比较,但如果实参是动态申请的一块内存,这个函数就没有办法知道该内存的大小,万一n大于该内存的字节数,那岂不会乱写一气,有可能会导致程序崩溃。有没有好的解决办法呢?

最佳答案

查看完整内容[请看2#楼]

什么都有万一。。。。 你就不应该让万一出现。 所以,大可以加个判断: if(参数>最大值)return 非法参数。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-10-20 20:36:38 | 显示全部楼层
什么都有万一。。。。
你就不应该让万一出现。
所以,大可以加个判断:
if(参数>最大值)return 非法参数。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-30 01:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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