diff --git a/components/heap/heap_caps.c b/components/heap/heap_caps.c index 2a9b12a514..1b5c98e2b9 100644 --- a/components/heap/heap_caps.c +++ b/components/heap/heap_caps.c @@ -462,3 +462,10 @@ void heap_caps_dump_all(void) { heap_caps_dump(MALLOC_CAP_INVALID); } + +size_t heap_caps_get_allocated_size( void *ptr ) +{ + heap_t *heap = find_containing_heap(ptr); + size_t size = multi_heap_get_allocated_size(heap->heap, ptr); + return size; +} diff --git a/components/heap/include/esp_heap_caps.h b/components/heap/include/esp_heap_caps.h index 6df13cbf59..cd91445227 100644 --- a/components/heap/include/esp_heap_caps.h +++ b/components/heap/include/esp_heap_caps.h @@ -324,6 +324,19 @@ void heap_caps_dump(uint32_t caps); */ void heap_caps_dump_all(void); +/** + * @brief Return the size that a particular pointer was allocated with. + * + * @param ptr Pointer to currently allocated heap memory. Must be a pointer value previously + * returned by heap_caps_malloc,malloc,calloc, etc. and not yet freed. + * + * @note The app will crash with an assertion failure if the pointer is not valid. + * + * @return Size of the memory allocated at this block. + * + */ +size_t heap_caps_get_allocated_size( void *ptr ); + #ifdef __cplusplus } #endif