Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
串口
堆_heap_动态内存管理
Hardfault
运行rt_free函数报错hard fault on thread: main
发布于 2021-09-22 23:07:34 浏览:1454
订阅该版
对于同一个函数,其内部是用来rt_malloc和rt_free但是由于其调用地方不一样,导致在一个地方不报错,另外一个地方报错。 ```c unsigned int mp3_get_tnum(TCHAR* path);//这个是我需要调用的函数 ``` ![0c38f1d7aa66c9920a2943575cc0a151.png.webp](https://oss-club.rt-thread.org/uploads/20210922/0c38f1d7aa66c9920a2943575cc0a151.png.webp) 第二次被调用的地方如下: ![2.png](https://oss-club.rt-thread.org/uploads/20210922/372153d8e441bc02fc081ba23a8cfc33.png.webp) 以下是函数原型: ```c //得到path路径下,目标文件的总个数 //path:路径 //返回值:总有效文件数 unsigned int mp3_get_tnum(TCHAR* path) { unsigned char res; unsigned int rval=0; char *fn; DIR tdir; //临时目录 FILINFO* tfileinfo; //临时文件信息 tfileinfo=(FILINFO*)rt_malloc(sizeof(FILINFO));//申请内存 #ifdef _USE_LFN tfileinfo->lfsize = _MAX_LFN; tfileinfo->lfname =(TCHAR *)rt_malloc(tfileinfo- >lfsize*sizeof(TCHAR)); rt_memset(tfileinfo->lfname,0,sizeof(tfileinfo->lfname)); printf("申请到的内存:%d\r\n",strlen(tfileinfo->lfname)); #endif res=f_opendir(&tdir,(const TCHAR*)path); //打开目录 if(res==FR_OK) { while(1)//查询总的有效文件数 { res=f_readdir(&tdir,tfileinfo); //读取目录下的一个文件 #ifdef _USE_LFN fn = *tfileinfo->lfname?tfileinfo->lfname:tfileinfo->fname; #else fn = tfileinfo->fname; #endif if(res!=FR_OK||fn[0]==0) { break; //错误了/到末尾了,退出 } printf("%s\r\n",fn); HAL_Delay(100); res=f_typetell((u8*)tfileinfo->lfname); if((res&0XF0)==0X40)//取高四位,看看是不是音乐文件 { rval++;//有效文件数增加1 } } printf("音乐文件路径:%s\r\n",path); printf("音乐文件数量:%d\r\n",rval); HAL_Delay(100); } #ifdef _USE_LFN **printf("准备释放内存\r\n");//第一次运行这里可以通过,但第二次运行就会发生报错,代码卡死** rt_free(tfileinfo->lfname); printf("释放内存0\r\n"); HAL_Delay(100); #endif rt_free(tfileinfo);//释放内存 f_closedir(&tdir); printf("释放内存1\r\n"); HAL_Delay(100); return rval; } ``` 按道理说,同一个函数,相隔不远,不应该报错的啊? 下面是报错信息 ``` \ | / - RT - Thread Operating System / | \ 3.1.5 build Sep 22 2021 2006 - 2020 Copyright by rt-thread team Init Successfully//while(1)之前的代码打印出来的 申请到的内存:0//第一次执行mp3_get_tnum(TCHAR* path); . .. 街道办GDC _ 欧阳耀莹 - 春娇与志明.mp3 谢安琪 - 钟无艳.mp3 Star Sky.mp3 Dancin (Krono Remix).mp3 Bad Apple.flac//以上是读取到的文件夹下面的文件 音乐文件路径:0:/MUSIC 音乐文件数量:5 准备释放内存//第一次成功释放了内存 释放内存0 释放内存1 normal0 申请到的内存:0//第二次执行该函数 . .. 街道办GDC _ 欧阳耀莹 - 春娇与志明.mp3 谢安琪 - 钟无艳.mp3 Star Sky.mp3 Dancin (Krono Remix).mp3 Bad Apple.flac 音乐文件路径:0:/MUSIC 音乐文件数量:5 ``` 准备释放内存//这次串口打印之后的rt_free就卡住了,不像上次那样正确退出,以下是报错信息 ``` psr: 0x41000000 r00: 0x20000888 r01: 0x200009b4 r02: 0x08001341 r03: 0x00000400 r04: 0x00000000 r05: 0x200009a0 r06: 0x20000888 r07: 0x00000000 r08: 0x20000000 r09: 0xdeadbeef r10: 0xdeadbeef r11: 0xdeadbeef r12: 0x00000000 lr: 0x080079bd pc: 0x08007532 hard fault on thread: main ``` 请问有大佬可以帮忙解答一下这是为什么的吗?
查看更多
1
个回答
默认排序
按发布时间排序
出出啊
2021-09-23
恃人不如自恃,人之为己者不如己之自为也
这种问题,检查你所有申请的内存,有没有溢出的,越界写内存的。 明显是内存堆被破坏了,free的时候出错。
撰写答案
登录
注册新账号
关注者
0
被浏览
1.5k
关于作者
黄泽雨
这家伙很懒,什么也没写!
提问
1
回答
0
被采纳
0
关注TA
发私信
相关问题
1
RTT1.0,STM32调试时会跑到HardFault【已解决】,出现新问题
2
新手请教关于hardfault怎么查
3
github最新版本库中stm32f0X分支,运行切换任务时候出现hardfault[已解决]
4
实现iap功能,bootloader使用了rtt操作系统,在跳转到app代码的时候提示出现hardfault的问题
5
ymodem在on_begin内发送can无法断开连接,而且RTT会报hardfault
6
挂载UFFS文件系统执行到退出_BuildTreeStepOne函数时hardfault异常
7
STM32F1+RTT串口接收中断进入hardfault
8
STM32F746NG随机进入hardfault(已解决)
9
[已解决]自已建了个STM32F103的MDK工程,初始化时总是进入HardFault,求教!
10
将 Cortex M3 的 hardfault 处理与 M4、M7、M0 保持一致?
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
rt-thread 小内存算法源码分析
2
env中添加lvgl软件包后,keil编译包--c99错误
3
【NXP-MCXA153】 定时器驱动移植
4
GD32F450 看门狗驱动适配
5
【NXP-MCXA153】看门狗驱动移植
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
freemodbus
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
keil_MDK
msh
ulog
C++_cpp
MicroPython
本月问答贡献
踩姑娘的小蘑菇
7
个答案
2
次被采纳
a1012112796
18
个答案
1
次被采纳
红枫
5
个答案
1
次被采纳
Ryan_CW
5
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
本月文章贡献
YZRD
3
篇文章
6
次点赞
catcatbing
3
篇文章
6
次点赞
lizimu
2
篇文章
11
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部