45 lines · cpp
1//===-- Implementation of custom operator delete --------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "new.h"10#include "hdr/func/free.h"11 12void operator delete(void *mem) noexcept { ::free(mem); }13 14void operator delete(void *mem, std::align_val_t) noexcept { ::free(mem); }15 16void operator delete(void *mem, size_t) noexcept { ::free(mem); }17 18void operator delete(void *mem, size_t, std::align_val_t) noexcept {19#ifdef LIBC_TARGET_OS_IS_WINDOWS20 ::_aligned_free(mem);21#else22 ::free(mem);23#endif24}25 26void operator delete[](void *mem) noexcept { ::free(mem); }27 28void operator delete[](void *mem, std::align_val_t) noexcept {29#ifdef LIBC_TARGET_OS_IS_WINDOWS30 ::_aligned_free(mem);31#else32 ::free(mem);33#endif34}35 36void operator delete[](void *mem, size_t) noexcept { ::free(mem); }37 38void operator delete[](void *mem, size_t, std::align_val_t) noexcept {39#ifdef LIBC_TARGET_OS_IS_WINDOWS40 ::_aligned_free(mem);41#else42 ::free(mem);43#endif44}45