aboutsummaryrefslogtreecommitdiffhomepage
path: root/memprof
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2025-02-16 11:45:38 +0300
committerlevlam <levlam@telegram.org>2025-02-16 11:45:38 +0300
commitadcbf50f4582a681afb66512d7037bba59fa3e14 (patch)
tree3af3b1cff63e264057cf1e24d7417300b8396936 /memprof
parent83e498b304c0d319e9e296b13a5e11baddcc704a (diff)
Update memprof_stat to C++17.
Diffstat (limited to 'memprof')
-rw-r--r--memprof/memprof.cpp4
-rw-r--r--memprof/memprof_stat.cpp17
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() {