// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #pragma once #include #include "usermem.h" struct UserMemStatsLogger { #if DEBUG_HEAP_ALLOCATIONS == 1 UserMemStatsLogger() { usermemResetStatistics(); freeHeapSize1 = usermemGetFreeHeapSize(); } ~UserMemStatsLogger() { size_t freeHeapSize2 = usermemGetFreeHeapSize(); size_t allocationsCount = usermemGetAllocationsCount(); size_t deallocationsCount = usermemGetDeallocationsCount(); size_t allocatedMin = usermemGetAllocatedMin(); size_t allocatedMax = usermemGetAllocatedMax(); size_t allocatedSum = usermemGetAllocatedSum(); LOG_INFO("\nFree before: %zu\nFree after: %zu\n# allocations: %zu\n# deallocations: %zu\nSmallest block: %zu\nBiggest block: %zu\nAllocated: %zu", freeHeapSize1, freeHeapSize2, allocationsCount, deallocationsCount, allocatedMin, allocatedMax, allocatedSum); } private: size_t freeHeapSize1; #endif };