解决:Unhandled exception in XX.exe: 0xc00000FD; Stack Overflow

本文介绍了在遇到运行时出现的栈溢出问题时的几种可能原因及解决方案,包括静态数组过大、无限循环调用和循环中变量过多的情况。

今天遇见这个问题,就简单记一下。参考了不少文档、博客,终于解决了问题。其实说起来问题也比较简单,就是在运行时在出错的地方卡住,并没有提示任何错误。在Debug时错误信息为:Unhandled exception in XX.exe: 0xc00000FD; Stack Overflow,栈溢出!!
造成的原因有一下几个:
1.静态数组过大,其他论坛上有人图片分辨率过高导致了,栈上申请空间太大,溢出。这种情况下,使用动态分配内存或者减少数组的内存就解决了。我认为动态分配才是王道,new一块内存,在函数结束时要delete去释放内存,指针的话用free。
2.两外两种的原因都出现在循环结构或者递归调用中。一种是死循环,就是你的判断条件设置的有缺陷,或者判断的位置不对导致的。我这次的是属于这种。算是比较低级了,无限循环调用递归。。。
3.另一种是真的在循环中确实产生的变量太多,一般的小工程的代码,不大容易出现这种错误。就是排除了代码上的问题,既然不能通过优化代码达到,那就将编译器的栈默认内存设置大一点。VS2017是在project——>properties——>Linker——>system,stack reserve size 设置为ox100000。
其实,如果你按照第三中设置后没效果的话,那就要优化代码了,大部分犯的错误就是无线循环了,当然如果你在跑deep learning的框架模型,就很可能第一种或者第三种了。

我的代码在烧录后,启动监视器显示ELF file SHA256: 9fa0bcf41 Rebooting... ESP-ROM:esp32c3-api1-20210207 Build:Feb 7 2021 rst:0xc (RTC_SW_CPU_RST),boot:0xd (SPI_FAST_FLASH_BOOT) Saved PC:0x4038086a --- 0x4038086a: esp_restart_noos at F:/esp/Espressif/frameworks/esp-idf-v5.5/components/esp_system/port/soc/esp32c3/system_internal.c:115 SPIWP:0xee mode:DIO, clock div:1 load:0x3fcd5820,len:0x15c0 load:0x403cbf10,len:0xc34 load:0x403ce710,len:0x2ff0 entry 0x403cbf1a I (35) boot: ESP-IDF HEAD-HASH-NOTFOUND 2nd stage bootloader I (35) boot: compile time Sep 3 2025 14:38:23 I (35) boot: chip revision: v0.4 I (36) boot: efuse block revision: v1.3 I (40) boot.esp32c3: SPI Speed : 80MHz I (44) boot.esp32c3: SPI Mode : DIO I (47) boot.esp32c3: SPI Flash Size : 2MB I (51) boot: Enabling RNG early entropy source... I (56) boot: Partition Table: I (58) boot: ## Label Usage Type ST Offset Length I (65) boot: 0 nvs WiFi data 01 02 00009000 00006000 I (71) boot: 1 phy_init RF data 01 01 0000f000 00001000 I (78) boot: 2 factory factory app 00 00 00010000 00100000 I (84) boot: End of partition table I (87) esp_image: segment 0: paddr=00010020 vaddr=3c090020 size=1f3f8h (127992) map I (115) esp_image: segment 1: paddr=0002f420 vaddr=3fc93c00 size=00bf8h ( 3064) load I (116) esp_image: segment 2: paddr=00030020 vaddr=42000020 size=8ea70h (584304) map I (212) esp_image: segment 3: paddr=000bea98 vaddr=3fc947f8 size=0156ch ( 5484) load I (213) esp_image: segment 4: paddr=000c000c vaddr=40380000 size=13b74h ( 80756) load I (231) esp_image: segment 5: paddr=000d3b88 vaddr=50000000 size=00020h ( 32) load I (237) boot: Loaded app from partition at offset 0x10000 I (237) boot: Disabling RNG early entropy source... I (248) cpu_start: Unicore app I (257) cpu_start: Pro cpu start user code I (257) cpu_start: cpu freq: 160000000 Hz I (257) app_init: Application information: I (257) app_init: Project name: hidd_demos I (261) app_init: App version: 1 I (265) app_init: Compile time: Sep 3 2025 14:37:57 I (270) app_init: ELF file SHA256: 9fa0bcf41... I (274) app_init: ESP-IDF: HEAD-HASH-NOTFOUND I (279) efuse_init: Min chip rev: v0.3 I (283) efuse_init: Max chip rev: v1.99 I (287) efuse_init: Chip rev: v0.4 I (291) heap_init: Initializing. RAM available for dynamic allocation: I (297) heap_init: At 3FC9A4B0 len 00025B50 (150 KiB): RAM I (302) heap_init: At 3FCC0000 len 0001C710 (113 KiB): Retention RAM I (308) heap_init: At 3FCDC710 len 00002950 (10 KiB): Retention RAM I (314) heap_init: At 50000020 len 00001FC8 (7 KiB): RTCRAM I (320) spi_flash: detected chip: generic I (323) spi_flash: flash io: dio W (326) spi_flash: Detected size(4096k) larger than the size in the binary image header(2048k). Using the size in the binary image header. I (338) sleep_gpio: Configure to isolate all GPIO pins in sleep state I (344) sleep_gpio: Enable automatic switching of GPIO sleep configuration I (351) coexist: coex firmware version: 831ec70 I (370) coexist: coexist rom version 9387209 I (370) main_task: Started on CPU0 I (370) main_task: Calling app_main() I (370) BLE_INIT: BT controller compile version [4713a69] I (370) BLE_INIT: Feature Config, ADV:1, BLE_50:0, DTM:1, SCAN:1, CCA:0, SMP:1, CONNECT:1 I (380) BLE_INIT: Bluetooth MAC: 90:e5:b1:46:9c:06 I (380) phy_init: phy_version 1201,bae5dd99,Mar 3 2025,15:36:21 Guru Meditation Error: Core 0 panic'ed (Load access fault). Exception was unhandled. Core 0 register dump: MEPC : 0x400587d2 RA : 0x4200cd86 SP : 0x3fc9d110 GP : 0x3fc94400 --- 0x400587d2: __strtok_r in ROM --- 0x4200cd86: ble_hid_init_config at F:/esp/Espressif/frameworks/esp-idf-v5.5/components/esp_hid/src/ble_hidd.c:687 TP : 0x3fc9d270 T0 : 0x4005890e T1 : 0x0000000f T2 : 0x0000902d --- 0x4005890e: _data_end_btdm_rom in ROM S0/FP : 0x3c0a72b0 S1 : 0x3fcad454 A0 : 0x3fcaeed0 A1 : 0x09ff0106 A2 : 0x0000a101 A3 : 0x3fcaeed0 A4 : 0x3fcb8fd1 A5 : 0x3fcaeed0 A6 : 0x00000000 A7 : 0x0000000f S2 : 0x3fcaeed0 S3 : 0x00000000 S4 : 0x3fc9d1a4 S5 : 0x00000000 S6 : 0x0000a101 S7 : 0x00000000 S8 : 0x00000000 S9 : 0x00000000 S10 : 0x00000000 S11 : 0x00000000 T3 : 0x00000000 T4 : 0x0000d740 T5 : 0x00000000 T6 : 0x8c154c98 MSTATUS : 0x00001881 MTVEC : 0x40380001 MCAUSE : 0x00000005 MTVAL : 0x09ff0106 --- 0x40380001: _vector_table at F:/esp/Espressif/frameworks/esp-idf-v5.5/components/riscv/vectors_intc.S:54 MHARTID : 0x00000000 Stack memory: 3fc9d110: 0x00000000 0x00000000 0x3fc970a4 0x3fc9d1a4 0x4200bdfe 0x3fca90d8 0x00000000 0x4200cfc8 --- 0x4200bdfe: hidd_event_adapter at F:/esp/ble_hid_device_demo/main/ble_hidd_demo_main.c:300 --- 0x4200cfc8: esp_ble_hidd_dev_init at F:/esp/Espressif/frameworks/esp-idf-v5.5/components/esp_hid/src/ble_hidd.c:984 3fc9d130: 0x00000000 0x00000000 0x3fc9d17c 0x00000005 0x3c095358 0x00000001 0x00001000 0x7fffffff 3fc9d150: 0x00000000 0x00000001 0x0000002c 0x4200bdfe 0x3fc9d1a4 0x00000001 0x3fca90d8 0x4200c41c --- 0x4200bdfe: hidd_event_adapter at F:/esp/ble_hid_device_demo/main/ble_hidd_demo_main.c:300 --- 0x4200c41c: esp_hidd_dev_init at F:/esp/Espressif/frameworks/esp-idf-v5.5/components/esp_hid/src/esp_hidd.c:32 3fc9d170: 0x00000000 0x00000003 0x00000000 0x00000000 0x00000000 0x00000003 0x3c093000 0x4200c202 --- 0x4200c202: app_main at F:/esp/ble_hid_device_demo/main/ble_hidd_demo_main.c:355 3fc9d190: 0x00000000 0x3fc9d20c 0x3c093534 0x4208e948 0x00001800 0x56781234 0x00000100 0x3c094c7c --- 0x4208e948: log_level_get at F:/esp/Espressif/frameworks/esp-idf-v5.5/components/log/src/log_level/tag_log_level/tag_log_level.c:81 3fc9d1b0: 0x3c094f38 0x3c094f4c 0x3c0a72b0 0x00000026 0x5a5aa5a5 0x02505080 0x00171000 0x00000601 3fc9d1d0: 0x001e0000 0x01000000 0x00000000 0x000b0000 0x00000001 0x00640000 0x00000000 0x01010000 3fc9d1f0: 0x004b0005 0x00000000 0x01000000 0x01000001 0x01010001 0x00000000 0x00000000 0x00000100 3fc9d210: 0x3c093534 0x00000003 0x3c093000 0x4208deec 0x00000000 0x00001388 0x00000001 0x00000000 --- 0x4208deec: main_task at F:/esp/Espressif/frameworks/esp-idf-v5.5/components/freertos/app_startup.c:209 3fc9d230: 0x00000000 0x00000000 0x00000000 0x4038b784 0x00000000 0x00000000 0x00000000 0x00000000 --- 0x4038b784: vPortTaskWrapper at F:/esp/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/portable/riscv/port.c:258 3fc9d250: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 3fc9d270: 0xa5a5a5a5 0xa5a5a5a5 0x00000150 0x3fc9d040 0x00000000 0x3fc95f40 0x3fc95f40 0x3fc9d27c 3fc9d290: 0x3fc95f38 0x00000018 0x00000000 0x00000000 0x3fc9d27c 0x00000000 0x00000001 0x3fc9c278 3fc9d2b0: 0x6e69616d 0x00000000 0x00000000 0x00000000 0x3fc9d270 0x00000001 0x00000000 0x00000000 3fc9d2d0: 0x00000000 0x00000000 0x3fc9aae8 0x3fc9ab50 0x3fc9abb8 0x00000000 0x00000000 0x00000001 3fc9d2f0: 0x00000000 0x00000000 0x00000000 0x420058be 0x00000000 0x00000000 0x00000000 0x00000000 --- 0x420058be: esp_cleanup_r at F:/esp/Espressif/frameworks/esp-idf-v5.5/components/newlib/src/newlib_init.c:42 3fc9d310: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 3fc9d330: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 3fc9d350: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 3fc9d370: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 3fc9d390: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 3fc9d3b0: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000600 3fc9d3d0: 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 3fc9d3f0: 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 3fc9d410: 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 3fc9d430: 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 3fc9d450: 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 3fc9d470: 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 3fc9d490: 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 3fc9d4b0: 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 3fc9d4d0: 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 3fc9d4f0: 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5
最新发布
09-04
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值