Files
op-pedal/src/MemDebug.cpp
T
2022-02-07 07:32:09 -05:00

69 lines
1.1 KiB
C++

#include "stdlib.h"
#include <mutex>
#ifdef DEBUG
static std::mutex memMutex;
struct MemStats {
size_t allocated = 0;
size_t allocations = 0;
};
MemStats memStats;
void *operator new(size_t size)
{
{
std::lock_guard lock(memMutex);
memStats.allocated += size;
memStats.allocations++;
}
char *p = (char*)malloc(size+8);
((size_t*)p)[0] = size;
return p+8;
}
void operator delete(void*mem)
{
char *p = ((char*)mem);
size_t size = *(size_t*)(p-8);
{
std::lock_guard lock(memMutex);
memStats.allocated -= size;
memStats.allocations--;
}
free(p-8);
}
void* operator new[](size_t size)
{
{
std::lock_guard lock(memMutex);
memStats.allocated += size;
memStats.allocations++;
}
char *p = (char*)malloc(size+8);
((size_t*)p)[0] = size;
return p+8;
}
void operator delete[](void*mem)
{
char *p = ((char*)mem);
size_t size = *(size_t*)(p-8);
{
std::lock_guard lock(memMutex);
memStats.allocated -= size;
memStats.allocations--;
}
free(p-8);
}
#endif