存储HTTP请求为全局变量后程序崩溃的问题求助
存储HTTP请求为全局变量后程序崩溃的问题求助
各位好,我最近在做一个WiFi连接相关的项目,用的WiFi库是事件回调机制的——简单说就是我得先把HTTP请求对象存起来,等WiFi的事件回调触发后再去调用它。
但现在遇到个大问题:我把HTTP请求设成全局变量之后,只要再次去访问它,程序直接就崩溃了!日志输出的错误信息是:
Guru Meditation Error: Core 0 panic'ed (
StoreProhibited). Exception was unhandled.
Core 0 register dump: P...(日志内容没贴全,后续的寄存器信息显示不全)
我自己试着琢磨了几个可能的原因,但还是没理清头绪,想请大家帮忙分析下:
- 会不会是存储方式的问题?比如我存的是HTTP请求对象的栈指针,等函数执行完栈帧销毁了,这个指针就变成野指针了?那是不是应该改用堆内存来创建这个请求对象?
- 或者是多核心访问的问题?看日志是Core 0崩溃,我用的是ESP32芯片,会不会是全局变量在多核心环境下访问没做同步处理,导致内存冲突了?
- 还有那个
StoreProhibited错误,是不是意味着我访问了不被允许的内存区域?比如这个HTTP请求对象的内部资源在某个时机被自动释放了,我全局存着它再去访问就碰到了无效内存?
另外,我也想问问大家,排查这种崩溃问题一般从哪几个方向入手?要是需要看具体代码的话,我可以把全局变量的定义、创建HTTP请求的代码还有回调函数的代码都贴出来~
麻烦各位大佬给点思路,实在是卡在这里动不了了😭
备注:内容来源于stack exchange,提问作者Ethan
相关产品推荐
相关产品推荐

