32 #include <unordered_map> 90 struct MemoryStatistics {
91 bool IsBalanced()
const;
93 int64_t count_malloc_ = 0;
94 int64_t count_free_ = 0;
95 std::unordered_map<void*, size_t> active_allocations_;
103 bool print_at_program_end_ =
true;
106 bool print_at_malloc_free_ =
false;
108 std::mutex statistics_mutex_;
109 std::map<Device, MemoryStatistics> statistics_;
static MemoryManagerStatistic & GetInstance()
Definition: MemoryManagerStatistic.cpp:38
void SetPrintLevel(PrintLevel level)
Sets the level of provided information for printing.
Definition: MemoryManagerStatistic.cpp:65
Statistics for all used devices are printed.
MemoryManagerStatistic & operator=(MemoryManagerStatistic &)=delete
~MemoryManagerStatistic()
Definition: MemoryManagerStatistic.cpp:49
void CountFree(void *ptr, const Device &device)
Definition: MemoryManagerStatistic.cpp:162
No statistics are printed.
void Reset()
Resets the statistics.
Definition: MemoryManagerStatistic.cpp:191
PrintLevel
Definition: MemoryManagerStatistic.h:41
Definition: MemoryManagerStatistic.h:39
void CountMalloc(void *ptr, size_t byte_size, const Device &device)
Adds the given allocation to the statistics.
Definition: MemoryManagerStatistic.cpp:137
void SetPrintAtProgramEnd(bool print)
Definition: MemoryManagerStatistic.cpp:67
Definition: PinholeCameraIntrinsic.cpp:35
void SetPrintAtMallocFree(bool print)
Enables or disables printing at each malloc and free.
Definition: MemoryManagerStatistic.cpp:71
bool HasLeaks() const
Definition: MemoryManagerStatistic.cpp:130
void Print() const
Prints statistics for all recorded devices depending on the print level.
Definition: MemoryManagerStatistic.cpp:75