2#ifdef LL_MEMORY_OPERATORS
8#include "mc/deps/core/memory/IMemoryAllocator.h"
10#include "ll/api/memory/Memory.h"
12extern "C" LL_SHARED_EXPORT
int const ll_memory_operator_overrided{};
14void operator delete(
void* p)
noexcept {
16 ::ll::memory::getDefaultAllocator()._release(p);
20void operator delete(
void* p, std::nothrow_t
const&)
noexcept {
operator delete(p); }
22void operator delete[](
void* p)
noexcept {
operator delete(p); }
24void operator delete[](
void* p, std::nothrow_t
const&)
noexcept {
operator delete[](p); }
26void operator delete(
void* p, std::size_t)
noexcept {
operator delete(p); }
28void operator delete[](
void* p, std::size_t)
noexcept {
operator delete[](p); }
30void operator delete(
void* p, std::align_val_t)
noexcept {
32 ::ll::memory::getDefaultAllocator()._alignedRelease(p);
36void operator delete(
void* p, std::align_val_t alignment, std::nothrow_t
const&)
noexcept {
37 operator delete(p, alignment);
39void operator delete[](
void* p, std::align_val_t alignment)
noexcept {
operator delete(p, alignment); }
41void operator delete[](
void* p, std::align_val_t alignment, std::nothrow_t
const&)
noexcept {
42 operator delete[](p, alignment);
44void operator delete(
void* p, std::size_t, std::align_val_t alignment)
noexcept {
operator delete(p, alignment); }
46void operator delete[](
void* p, std::size_t, std::align_val_t alignment)
noexcept {
operator delete[](p, alignment); }
48[[nodiscard]] LL_ALLOCATOR
void*
operator new(std::size_t size) {
49 if (
void*
const block = ::ll::memory::getDefaultAllocator()._allocate(size)) {
52 ::ll::memory::throwMemoryException(size);
54[[nodiscard]] LL_NOTHROW_ALLOCATOR
void*
operator new(std::size_t size, std::nothrow_t
const&)
noexcept {
55 return ::ll::memory::getDefaultAllocator()._allocate(size);
57[[nodiscard]] LL_ALLOCATOR
void*
operator new[](std::size_t size) {
return operator new(size); }
59[[nodiscard]] LL_NOTHROW_ALLOCATOR
void*
operator new[](std::size_t size, std::nothrow_t
const& tag)
noexcept {
60 return operator new(size, tag);
62[[nodiscard]] LL_ALLOCATOR
void*
operator new(std::size_t size, std::align_val_t alignment) {
63 if (
void*
const block =
64 ::ll::memory::getDefaultAllocator()._alignedAllocate(size,
static_cast<size_t>(alignment))) {
67 ::ll::memory::throwMemoryException(size);
69[[nodiscard]] LL_NOTHROW_ALLOCATOR
void*
70operator new(std::size_t size, std::align_val_t alignment, std::nothrow_t
const&)
noexcept {
71 return ::ll::memory::getDefaultAllocator()._alignedAllocate(size,
static_cast<size_t>(alignment));
73[[nodiscard]] LL_ALLOCATOR
void*
operator new[](std::size_t size, std::align_val_t alignment) {
74 return operator new(size, alignment);
76[[nodiscard]] LL_NOTHROW_ALLOCATOR
void*
77operator new[](std::size_t size, std::align_val_t alignment, std::nothrow_t
const& tag)
noexcept {
78 return operator new(size, alignment, tag);