+/*!
+ * Free a block of memory, determining its size automatically.
+ *
+ * \param h Heap from which the block was allocated.
+ * \param mem Pointer to a block of memory previously allocated with
+ * either heap_malloc() or heap_calloc().
+ *
+ * \note If \a mem is a NULL pointer, no operation is performed.
+ *
+ * \note Freeing the same memory block twice has undefined behavior.
+ *
+ * \note This function works like the ANSI C free().
+ */
+void heap_free(struct Heap *h, void *mem)