1#ifndef CPG_TRACK_NEW_HPP
2#define CPG_TRACK_NEW_HPP
13#include <memory_resource>
26 static inline int numMalloc = 0;
27 static inline size_t sumSize = 0;
28 static inline bool doTrace =
false;
29 static inline bool inNew =
false;
45 static void*
allocate(std::size_t size, std::size_t align,
const char* call)
54 p = std::malloc(size);
59 p = _aligned_malloc(size, align);
61 p = std::aligned_alloc(size, align);
69 printf(
"#%d %s ", numMalloc, call);
70 printf(
"(%zu bytes, ", size);
73 printf(
"%zu-byte aligned) ", align);
77 printf(
"def-aligned) ");
80 printf(
"=> %p (total: %zu bytes)\n", (
void*)p, sumSize);
89 printf(
"%d allocations for %zu bytes\n", numMalloc, sumSize);
96 void*
operator new (std::size_t size)
102 void*
operator new (std::size_t size, std::align_val_t align)
108 void*
operator new[] (std::size_t size)
114 void*
operator new[] (std::size_t size, std::align_val_t align)
120 void operator delete (
void* p)
noexcept
125 void operator delete (
void* p, std::size_t)
noexcept
127 ::operator
delete(p);
130 void operator delete (
void* p, std::align_val_t)
noexcept
139 void operator delete (
void* p, std::size_t, std::align_val_t align)
noexcept
141 ::operator
delete(p, align);
144#define Cpg_TrackNewReset() cpg::track_new::TrackNew::reset()
145#define Cpg_TrackNewStatus() cpg::track_new::TrackNew::status()
static void * allocate(std::size_t size, std::size_t align, const char *call)
static void trace(bool b)