我的应用启动后总是遇到相似的错误,然后发生重启,不知道怎么debug。因为这个错误我重新安装了esp-idf, 4.4.x版本。但没能消除错误。同样的代码几个月之前是工作的。我想问一下可能是什么原因?
每次不完全一样但是经常看到这句:
assert failed: heap_caps_free heap_caps.c:339 (heap != NULL && "free() target pointer is outside heap areas")
[已解决] assert failed: heap_caps_free, and panic
-
- Posts: 7
- Joined: Fri Nov 12, 2021 12:49 am
-
- Posts: 786
- Joined: Wed Nov 14, 2018 8:45 am
Re: assert failed: heap_caps_free, and panic
free 的地址不对了,一种可能是你哪个任务的 stack 太小了。
-
- Posts: 7
- Joined: Fri Nov 12, 2021 12:49 am
Re: assert failed: heap_caps_free, and panic
谢谢你的建议,我增加了stack,拿掉了所有malloc/free代码,之后看到确实是可以工作的。
我现在缩小了问题范围;我发现只要我在一个任务里malloc过内存,即使立刻free,什么也不做;最终也会引起(另一个任务里)esp_http_client发生错误,有时候是在open时,有时候时cleanup时;都和堆内存相关。
是直接用malloc/free不行吗?需要用特别的malloc/free函数?还是需要什么配置?
我现在缩小了问题范围;我发现只要我在一个任务里malloc过内存,即使立刻free,什么也不做;最终也会引起(另一个任务里)esp_http_client发生错误,有时候是在open时,有时候时cleanup时;都和堆内存相关。
是直接用malloc/free不行吗?需要用特别的malloc/free函数?还是需要什么配置?
-
- Posts: 7
- Joined: Fri Nov 12, 2021 12:49 am
Re: assert failed: heap_caps_free, and panic
最终我找到了问题,和esp-idf无关,是我自己的代码在switch之后又free了一次内存,free了两次所以错了。I am stupid。谢谢你的建议。
Who is online
Users browsing this forum: No registered users and 34 guests