开了几个比较大的数组内存(20K,10K,10K,10K还有几个小的,总计估计有130K左右)。
然后我后面检测内存,发现只要占用小于80KB左右的时候就重启了,不是WDT重启就是直接报内存问题重启。
我自己猜测是因为内存碎片太多,在申请内存发现申请不到符合要求的连续内存,所以重启了。但是也不会在剩余80K就重启吧?为什么会这样啊??
另,有没有什么API可以自己把申请的内存放在指定的位置,这样我直接初始化的时候把内存排好直接申请,这样可以把连续的内存都留出来。
离线
贴个复现代码上来看看呗
离线
定义全局数组不就是把连续内存保留出来吗,这时留给动态管理的内存就相应减少了。
离线
代码太长了不方便复制,内存必须保留系统才能正常吗?
离线
一不小心看成了,做大项目会重启了。。。。
离线
定义全局数组不就是把连续内存保留出来吗,这时留给动态管理的内存就相应减少了。
是的,但是后面我有一些其他的服务,比如webserver,在内存剩余70k的时候webserver就不正常了,更准确的说就是会导致系统重启
离线
我也发现这个问题了,70K启用WIFI基本上是不是成功的,会触发重启,如果还有70K,你禁掉部份IRAM能省个二三十K出来,就差不多够用了
离线
esp32 跑rtos的呀,不能按常归mcu算。
离线