diff options
| author | levlam <levlam@telegram.org> | 2025-02-16 11:45:38 +0300 |
|---|---|---|
| committer | levlam <levlam@telegram.org> | 2025-02-16 11:45:38 +0300 |
| commit | adcbf50f4582a681afb66512d7037bba59fa3e14 (patch) | |
| tree | 3af3b1cff63e264057cf1e24d7417300b8396936 /memprof | |
| parent | 83e498b304c0d319e9e296b13a5e11baddcc704a (diff) | |
Update memprof_stat to C++17.
Diffstat (limited to 'memprof')
| -rw-r--r-- | memprof/memprof.cpp | 4 | ||||
| -rw-r--r-- | memprof/memprof_stat.cpp | 17 |
2 files changed, 12 insertions, 9 deletions
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<std::size_t>(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() { |
