github.com/moontrade/unsafe@v0.9.1/memory/rpmalloc/src/rpnew.h (about)

     1  
     2  #ifdef __cplusplus
     3  
     4  #include <new>
     5  #include <rpmalloc.h>
     6  
     7  #ifndef __CRTDECL
     8  #define __CRTDECL
     9  #endif
    10  
    11  extern void __CRTDECL
    12  operator delete(void* p) noexcept {
    13  	rpfree(p);
    14  }
    15  
    16  extern void __CRTDECL
    17  operator delete[](void* p) noexcept {
    18  	rpfree(p);
    19  }
    20  
    21  extern void* __CRTDECL
    22  operator new(std::size_t size) noexcept(false) {
    23  	return rpmalloc(size);
    24  }
    25  
    26  extern void* __CRTDECL
    27  operator new[](std::size_t size) noexcept(false) {
    28  	return rpmalloc(size);
    29  }
    30  
    31  extern void* __CRTDECL
    32  operator new(std::size_t size, const std::nothrow_t& tag) noexcept {
    33  	(void)sizeof(tag);
    34  	return rpmalloc(size);
    35  }
    36  
    37  extern void* __CRTDECL
    38  operator new[](std::size_t size, const std::nothrow_t& tag) noexcept {
    39  	(void)sizeof(tag);
    40  	return rpmalloc(size);
    41  }
    42  
    43  #if (__cplusplus >= 201402L || _MSC_VER >= 1916)
    44  
    45  extern void __CRTDECL
    46  operator delete(void* p, std::size_t size) noexcept {
    47  	(void)sizeof(size);
    48  	rpfree(p);
    49  }
    50  
    51  extern void __CRTDECL
    52  operator delete[](void* p, std::size_t size) noexcept {
    53  	(void)sizeof(size);
    54  	rpfree(p);
    55  }
    56  
    57  #endif
    58  
    59  #if (__cplusplus > 201402L || defined(__cpp_aligned_new))
    60  
    61  extern void __CRTDECL
    62  operator delete(void* p, std::align_val_t align) noexcept {
    63  	(void)sizeof(align);
    64  	rpfree(p);
    65  }
    66  
    67  extern void __CRTDECL
    68  operator delete[](void* p, std::align_val_t align) noexcept {
    69  	(void)sizeof(align);
    70  	rpfree(p);
    71  }
    72  
    73  extern void __CRTDECL
    74  operator delete(void* p, std::size_t size, std::align_val_t align) noexcept {
    75  	(void)sizeof(size);
    76  	(void)sizeof(align);
    77  	rpfree(p);
    78  }
    79  
    80  extern void __CRTDECL
    81  operator delete[](void* p, std::size_t size, std::align_val_t align) noexcept {
    82  	(void)sizeof(size);
    83  	(void)sizeof(align);
    84  	rpfree(p);
    85  }
    86  
    87  extern void* __CRTDECL
    88  operator new(std::size_t size, std::align_val_t align) noexcept(false) {
    89  	return rpaligned_alloc(static_cast<size_t>(align), size);
    90  }
    91  
    92  extern void* __CRTDECL
    93  operator new[](std::size_t size, std::align_val_t align) noexcept(false) {
    94  	return rpaligned_alloc(static_cast<size_t>(align), size);
    95  }
    96  
    97  extern void* __CRTDECL
    98  operator new(std::size_t size, std::align_val_t align, const std::nothrow_t& tag) noexcept {
    99  	(void)sizeof(tag);
   100  	return rpaligned_alloc(static_cast<size_t>(align), size);
   101  }
   102  
   103  extern void* __CRTDECL
   104  operator new[](std::size_t size, std::align_val_t align, const std::nothrow_t& tag) noexcept {
   105  	(void)sizeof(tag);
   106  	return rpaligned_alloc(static_cast<size_t>(align), size);
   107  }
   108  
   109  #endif
   110  
   111  #endif