aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--memprof/memprof.cpp13
1 files changed, 8 insertions, 5 deletions
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<std::size_t>(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;