From adcbf50f4582a681afb66512d7037bba59fa3e14 Mon Sep 17 00:00:00 2001 From: levlam Date: Sun, 16 Feb 2025 11:45:38 +0300 Subject: Update memprof_stat to C++17. --- memprof/memprof.cpp | 4 ++-- memprof/memprof_stat.cpp | 17 ++++++++++------- 2 files changed, 12 insertions(+), 9 deletions(-) (limited to 'memprof') diff --git a/memprof/memprof.cpp b/memprof/memprof.cpp index 8870aa7c6..713ff0868 100644 --- a/memprof/memprof.cpp +++ b/memprof/memprof.cpp @@ -291,7 +291,7 @@ void *memalign(std::size_t alignment, std::size_t size) { } } -// c++17 guarantees that it is enough to override these 4 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()); } @@ -305,7 +305,7 @@ 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)' +// 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); } diff --git a/memprof/memprof_stat.cpp b/memprof/memprof_stat.cpp index fe7be2ea4..8bf8f88d7 100644 --- a/memprof/memprof_stat.cpp +++ b/memprof/memprof_stat.cpp @@ -140,21 +140,24 @@ int posix_memalign(void **memptr, size_t alignment, 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 do_malloc(count); + return malloc_with_frame(count, get_backtrace()); } void operator delete(void *ptr) noexcept(true) { 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) { +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); } -// c++17 -// void *operator new(std::size_t count, std::align_val_t al); -// void operator delete(void *ptr, std::align_val_t al); +// 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); +} #else bool is_memprof_on() { -- cgit v1.2.3