zhanghu 6 лет назад
Родитель
Сommit
341ef5e8b2
2 измененных файлов с 20 добавлено и 0 удалено
  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

@@ -450,3 +450,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

@@ -310,6 +310,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