/* * Copyright (c) 2018-2020, Andreas Kling * Copyright (c) 2021, Daniel Bertalan * * SPDX-License-Identifier: BSD-2-Clause */ #if defined(__serenity__) && !defined(KERNEL) # include # include // However deceptively simple these functions look, they must not be inlined. // Memory allocated in one translation unit has to be deallocatable in another // translation unit, so these functions must be the same everywhere. // By making these functions global, this invariant is enforced. void* operator new(size_t size) { void* ptr = malloc(size); VERIFY(ptr); return ptr; } void* operator new(size_t size, const std::nothrow_t&) noexcept { return malloc(size); } void operator delete(void* ptr) noexcept { return free(ptr); } void operator delete(void* ptr, size_t) noexcept { return free(ptr); } void* operator new[](size_t size) { void* ptr = malloc(size); VERIFY(ptr); return ptr; } void* operator new[](size_t size, const std::nothrow_t&) noexcept { return malloc(size); } void operator delete[](void* ptr) noexcept { return free(ptr); } void operator delete[](void* ptr, size_t) noexcept { return free(ptr); } #endif