diff --git a/src/libraries/kutil/heap_allocator.cpp b/src/libraries/kutil/heap_allocator.cpp index 4da4b54..0e77b38 100644 --- a/src/libraries/kutil/heap_allocator.cpp +++ b/src/libraries/kutil/heap_allocator.cpp @@ -64,7 +64,7 @@ private: heap_allocator::heap_allocator() : m_next(0), m_size(0) {} heap_allocator::heap_allocator(uintptr_t start, size_t size) : - m_next(start), m_size(size) + m_next(start), m_size(size), m_allocated_size(0) { kutil::memset(m_free, 0, sizeof(m_free)); } @@ -82,6 +82,7 @@ heap_allocator::allocate(size_t length) mem_header *header = pop_free(size); header->set_used(true); + m_allocated_size += (1 << size); return header + 1; } @@ -93,6 +94,7 @@ heap_allocator::free(void *p) mem_header *header = reinterpret_cast(p); header -= 1; // p points after the header header->set_used(false); + m_allocated_size -= (1 << header->size()); while (header->size() != max_size) { auto size = header->size(); diff --git a/src/libraries/kutil/include/kutil/heap_allocator.h b/src/libraries/kutil/include/kutil/heap_allocator.h index 379a5ce..fddc1d5 100644 --- a/src/libraries/kutil/include/kutil/heap_allocator.h +++ b/src/libraries/kutil/include/kutil/heap_allocator.h @@ -55,6 +55,7 @@ protected: uintptr_t m_next; size_t m_size; mem_header *m_free[max_size - min_size + 1]; + size_t m_allocated_size; heap_allocator(const heap_allocator &) = delete; };