diff options
| author | Dan Engelbrecht <[email protected]> | 2024-05-21 15:03:04 +0200 |
|---|---|---|
| committer | Dan Engelbrecht <[email protected]> | 2024-05-21 15:03:04 +0200 |
| commit | 0c7894921e784b38357abe000baa6e03e183fb16 (patch) | |
| tree | 8c9aef978eb7190c315d918a61b7bd6ca1ec385a /src/zencore/include | |
| parent | refactor BlockStore IterateChunks (#77) (diff) | |
| download | zen-de/memory-stomp-detector.tar.xz zen-de/memory-stomp-detector.zip | |
Diffstat (limited to 'src/zencore/include')
| -rw-r--r-- | src/zencore/include/zencore/zen-new-delete.h | 71 | ||||
| -rw-r--r-- | src/zencore/include/zencore/zencore.h | 7 |
2 files changed, 78 insertions, 0 deletions
diff --git a/src/zencore/include/zencore/zen-new-delete.h b/src/zencore/include/zencore/zen-new-delete.h new file mode 100644 index 000000000..27c53b4e2 --- /dev/null +++ b/src/zencore/include/zencore/zen-new-delete.h @@ -0,0 +1,71 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include <zencore/zencore.h> + +#if ZEN_USE_MIMALLOC + +# define zen_new_aligned mi_aligned_alloc +# define zen_free mi_free + +#else + +# include <new> + +# if defined(_MSC_VER) && defined(_Ret_notnull_) && defined(_Post_writable_byte_size_) +// stay consistent with VCRT definitions +# define mi_decl_new(n) [[nodiscard]] _Ret_notnull_ _Post_writable_byte_size_(n) +# define mi_decl_new_nothrow(n) [[nodiscard]] _Ret_maybenull_ _Success_(return != NULL) _Post_writable_byte_size_(n) +# else +# define mi_decl_new(n) [[nodiscard]] +# define mi_decl_new_nothrow(n) [[nodiscard]] +# endif + +void +operator delete(void* p) noexcept +{ + zen_free(p); +}; +void +operator delete[](void* p) noexcept +{ + zen_free(p); +}; + +void +operator delete(void* p, const std::nothrow_t&) noexcept +{ + zen_free(p); +} +void +operator delete[](void* p, const std::nothrow_t&) noexcept +{ + zen_free(p); +} + +mi_decl_new(n) void* +operator new(std::size_t n) noexcept(false) +{ + return zen_new(n); +} +mi_decl_new(n) void* +operator new[](std::size_t n) noexcept(false) +{ + return zen_new(n); +} + +mi_decl_new_nothrow(n) void* +operator new(std::size_t n, const std::nothrow_t& tag) noexcept +{ + (void)(tag); + return zen_new(n); +} +mi_decl_new_nothrow(n) void* +operator new[](std::size_t n, const std::nothrow_t& tag) noexcept +{ + (void)(tag); + return zen_new(n); +} + +#endif diff --git a/src/zencore/include/zencore/zencore.h b/src/zencore/include/zencore/zencore.h index d21c0e7e2..600406acb 100644 --- a/src/zencore/include/zencore/zencore.h +++ b/src/zencore/include/zencore/zencore.h @@ -23,6 +23,13 @@ # define ZEN_DEBUG_SECTION ZEN_CODE_SECTION(".zcold") #endif +void zen_free(void* p) noexcept; +void zen_free_size(void* p, std::size_t n) noexcept; +void* zen_new(std::size_t n) noexcept; +void* zen_new_aligned(std::size_t n, size_t al) noexcept; +void zen_free_aligned(void* p, size_t al) noexcept; +void zen_free_size_aligned(void* p, std::size_t n, size_t al) noexcept; + namespace zen { struct CallstackFrames; |