From 83e498b304c0d319e9e296b13a5e11baddcc704a Mon Sep 17 00:00:00 2001 From: levlam Date: Sun, 16 Feb 2025 11:35:06 +0300 Subject: Update memprof to C++17. --- memprof/memprof.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'memprof') diff --git a/memprof/memprof.cpp b/memprof/memprof.cpp index 92c20f441..8870aa7c6 100644 --- a/memprof/memprof.cpp +++ b/memprof/memprof.cpp @@ -291,22 +291,25 @@ void *memalign(std::size_t alignment, std::size_t size) { } } -// c++14 guarantees that it is enough to override these two operators. +// c++17 guarantees that it is enough to override these 4 operators void *operator new(std::size_t count) { return malloc_with_frame(count, get_backtrace()); } void operator delete(void *ptr) noexcept(true) { free(ptr); } +void *operator new(std::size_t count, std::align_val_t al) { + return memalign(static_cast(al), count); +} +void operator delete(void *ptr, std::align_val_t al) noexcept { + free(ptr); +} + // because of gcc warning: the program should also define 'void operator delete(void*, std::size_t)' void operator delete(void *ptr, std::size_t) noexcept(true) { free(ptr); } -// c++17 -// void *operator new(std::size_t count, std::align_val_t al); -// void operator delete(void *ptr, std::align_val_t al); - #else bool is_memprof_on() { return false; -- cgit v1.2.3