/* * Copyright (c) 2018 * * SPDX-License-Identifier: Apache-2.0 */ #include #include #if __cplusplus < 201103L #define NOEXCEPT #else /* >= C++11 */ #define NOEXCEPT noexcept #endif /* __cplusplus */ #if __cplusplus < 202002L #define NODISCARD #else #define NODISCARD [[nodiscard]] #endif /* __cplusplus */ NODISCARD void* operator new(size_t size) { return malloc(size); } NODISCARD void* operator new[](size_t size) { return malloc(size); } NODISCARD void* operator new(std::size_t size, const std::nothrow_t& tag) NOEXCEPT { return malloc(size); } NODISCARD void* operator new[](std::size_t size, const std::nothrow_t& tag) NOEXCEPT { return malloc(size); } #if __cplusplus >= 201703L NODISCARD void* operator new(size_t size, std::align_val_t al) { return aligned_alloc(static_cast(al), size); } NODISCARD void* operator new[](std::size_t size, std::align_val_t al) { return aligned_alloc(static_cast(al), size); } NODISCARD void* operator new(std::size_t size, std::align_val_t al, const std::nothrow_t&) NOEXCEPT { return aligned_alloc(static_cast(al), size); } NODISCARD void* operator new[](std::size_t size, std::align_val_t al, const std::nothrow_t&) NOEXCEPT { return aligned_alloc(static_cast(al), size); } #endif /* __cplusplus >= 201703L */ void operator delete(void* ptr) NOEXCEPT { free(ptr); } void operator delete[](void* ptr) NOEXCEPT { free(ptr); } #if (__cplusplus > 201103L) void operator delete(void* ptr, size_t) NOEXCEPT { free(ptr); } void operator delete[](void* ptr, size_t) NOEXCEPT { free(ptr); } #endif // __cplusplus > 201103L