OpenEdv-开源电子网

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

内存管理出现HardFault错误!!!

[复制链接]

8

主题

25

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2019-1-30
在线时间
24 小时
发表于 2019-3-22 18:20:10 | 显示全部楼层 |阅读模式
调试发现在 free 函数中出现了HardFault。进一步发现,函数返回时,SP指针指向了0x00000000这个地址,导致出现了HardFault错误。实在不明白其原理,希望各位大佬能给点提示,给一点解决问题的思路
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

25

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2019-1-30
在线时间
24 小时
 楼主| 发表于 2019-3-22 18:22:06 | 显示全部楼层

RE: 内存管理出现HardFault错误!!!

附上图片
QQ图片20190322181820.png
QQ图片20190322181207.png
QQ图片20190322181202.png
回复 支持 反对

使用道具 举报

35

主题

560

帖子

2

精华

资深版主

Rank: 8Rank: 8

积分
17769
金钱
17769
注册时间
2018-3-3
在线时间
523 小时
发表于 2019-3-22 19:52:47 | 显示全部楼层

回帖奖励 +20 金钱

帮顶~~~,检测下offset的地址 看下对不对的
/*
*
*
*
*
*
*/
回复 支持 反对

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2019-3-22 23:52:01 | 显示全部楼层
本帖最后由 edmund1234 于 2019-3-22 23:54 编辑

申请内存时返回给你被申请了的内存首地址, 而释放内存靠的也是这个地址, 你给一个内容为0的地址给Free去释放内存,它那里会猜得出来你到底想释放那一段内存? 要是你是Free这函数的作者,  除了报错还能有更好的方法吗?
回复 支持 反对

使用道具 举报

8

主题

25

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2019-1-30
在线时间
24 小时
 楼主| 发表于 2019-3-23 08:49:30 | 显示全部楼层
谢谢你们的回复,具体的问题我会再次去测试。
回复 支持 反对

使用道具 举报

8

主题

25

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2019-1-30
在线时间
24 小时
 楼主| 发表于 2019-3-23 10:07:07 | 显示全部楼层
这个好像释放的值远远的大于了我申请的值,可能导致了溢出,出现了hard fault。我想请问一下,为什么我申请时没有这么大,而释放的时候却导致溢出咧。说明一下,本工程使用的时C++,其中参杂了一些c++的new,所以是不是这个原因导致了内存管理出现了问题?

TIM图片20190323100424.png
TIM图片20190323100419.png
回复 支持 反对

使用道具 举报

17

主题

193

帖子

0

精华

高级会员

Rank: 4

积分
708
金钱
708
注册时间
2014-7-2
在线时间
137 小时
发表于 2019-3-23 10:20:00 来自手机 | 显示全部楼层
可能是别的数据溢出把你这给覆盖了
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-12 15:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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