Ver Fonte

Merge branch 'feature/heap_caps_get_size_free' into 'master'

add heap_caps_get_allocated_size

See merge request espressif/esp-idf!6375
Angus Gratton há 6 anos atrás
pai
commit
04dbe663be
2 ficheiros alterados com 20 adições e 0 exclusões
  1. 7 0
      components/heap/heap_caps.c
  2. 13 0
      components/heap/include/esp_heap_caps.h

+ 7 - 0
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;
+}

+ 13 - 0
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