diff --git a/Src/Utils/FMemStats.cpp b/Src/Utils/FMemStats.cpp
index 893ba13b838ff024e09b471e2058f6232029d452..6be6b571385051cc8a435e4134943050717bdda8 100755
--- a/Src/Utils/FMemStats.cpp
+++ b/Src/Utils/FMemStats.cpp
@@ -33,14 +33,28 @@ FMemStats FMemStats::controler;
     }
 
     // Regular scalar delete
-    void operator delete(void* p) {
+    void operator delete(void* p) noexcept{
         if(p){
             FMemStats::controler.deallocate( *(reinterpret_cast<size_t*>(static_cast<unsigned char*>(p) - 8)) );
             std::free(static_cast<unsigned char*>(p) - 8);
         }
     }
 
-    void operator delete[](void* p) {
+    void operator delete[](void* p) noexcept{
+        if(p){
+            FMemStats::controler.deallocate( *(reinterpret_cast<size_t*>(static_cast<unsigned char*>(p) - 8)) );
+            std::free(static_cast<unsigned char*>(p) - 8);
+        }
+    }
+
+    void operator delete  ( void* p, const std::nothrow_t& /*tag*/) {
+        if(p){
+            FMemStats::controler.deallocate( *(reinterpret_cast<size_t*>(static_cast<unsigned char*>(p) - 8)) );
+            std::free(static_cast<unsigned char*>(p) - 8);
+        }
+    }
+
+    void operator delete[]( void* p, const std::nothrow_t& /*tag*/) {
         if(p){
             FMemStats::controler.deallocate( *(reinterpret_cast<size_t*>(static_cast<unsigned char*>(p) - 8)) );
             std::free(static_cast<unsigned char*>(p) - 8);
diff --git a/Src/Utils/FMemStats.h b/Src/Utils/FMemStats.h
index 33d191e74abe19afdaed1a0a10c1b61098756e6d..a28583b5e5d4bdc3ba0c51816e04cadc4bccc109 100755
--- a/Src/Utils/FMemStats.h
+++ b/Src/Utils/FMemStats.h
@@ -32,8 +32,10 @@
 #include <stdexcept>
 #warning You are using mem stats
 void* operator new(std::size_t n);
-void operator delete(void* p);
-void operator delete[](void* p);
+void operator delete(void* p) noexcept;
+void operator delete[](void* p) noexcept;
+void operator delete  ( void* ptr, const std::nothrow_t& tag);
+void operator delete[]( void* ptr, const std::nothrow_t& tag);
 #endif
 
 /** Give the memory allocation details
@@ -64,8 +66,10 @@ private:
 
 #ifdef ScalFMM_USE_MEM_STATS
     friend void* operator new(std::size_t n);
-    friend void operator delete(void* p);
-    friend void operator delete[](void* p);
+    friend void operator delete(void* p) noexcept;
+    friend void operator delete[](void* p) noexcept;
+    friend void operator delete  ( void* ptr, const std::nothrow_t& tag);
+    friend void operator delete[]( void* ptr, const std::nothrow_t& tag);
 #endif
 
 public: