blob: b4bbc5a9758f44fe9dd3ef49903d4f51eba032c0 [file] [log] [blame]
// Copyright 2016 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <zxcpp/new.h>
#include <zircon/assert.h>
#include <stdlib.h>
// The kernel does not want non-AllocCheckered non-placement new
// overloads, but userspace can have them.
#if !_KERNEL
void* operator new(size_t s) {
auto mem = ::malloc(s);
if (!mem) {
ZX_PANIC("Out of memory (new)\n");
}
return mem;
}
void* operator new[](size_t s) {
auto mem = ::malloc(s);
if (!mem) {
ZX_PANIC("Out of memory (new[])\n");
}
return mem;
}
#endif // !_KERNEL
void* operator new(size_t s, const std::nothrow_t&) noexcept {
return ::malloc(s);
}
void* operator new[](size_t s, const std::nothrow_t&) noexcept {
return ::malloc(s);
}
void* operator new(size_t , void *p) {
return p;
}
void operator delete(void *p) {
return ::free(p);
}
void operator delete[](void *p) {
return ::free(p);
}
void operator delete(void *p, size_t s) {
return ::free(p);
}
void operator delete[](void *p, size_t s) {
return ::free(p);
}