4. 4.3 Gestion mémoire — heap_4
ESP-IDF utilise heap_4 par défaut : allocateur FreeRTOS avec coalescence des blocs libres. Sur ESP32, la RAM est fragmentée (DRAM interne 520 Ko, PSRAM externe optionnelle).
// Allouer sur le heap FreeRTOS
void *ptr = pvPortMalloc(256);
if (ptr == NULL) {
ESP_LOGE("MEM", "Allocation failed!");
}
vPortFree(ptr);
// Diagnostic mémoire
size_t free_heap = xPortGetFreeHeapSize();
size_t min_heap = xPortGetMinimumEverFreeHeapSize();
ESP_LOGI("MEM", "Free: %u bytes Min ever: %u bytes",
(unsigned)free_heap, (unsigned)min_heap);
Regle d'or : allouer toutes les ressources RTOS (queues, semaphores, stacks) au demarrage dans app_main. Eviter l'allocation dynamique pendant l'execution.