Skip to content

Commit

Permalink
Allow overriding selected operator new and delete functions
Browse files Browse the repository at this point in the history
This makes these functions weak, so that a sketch or library can replace
them. This does not apply to all of these operators, only for the ones
that the C++ standard specifies as replaceable.
  • Loading branch information
matthijskooijman committed Sep 17, 2020
1 parent 07b6bd1 commit 4e469e0
Showing 1 changed file with 10 additions and 10 deletions.
20 changes: 10 additions & 10 deletions cores/arduino/new
Original file line number Diff line number Diff line change
Expand Up @@ -33,25 +33,25 @@ namespace std {
new_handler get_new_handler() noexcept;
} // namespace std

void * operator new(size_t size);
void * operator new[](size_t size);
[[gnu::weak]] void * operator new(size_t size);
[[gnu::weak]] void * operator new[](size_t size);

void * operator new(size_t size, const std::nothrow_t tag) noexcept;
void * operator new[](size_t size, const std::nothrow_t& tag) noexcept;
[[gnu::weak]] void * operator new(size_t size, const std::nothrow_t tag) noexcept;
[[gnu::weak]] void * operator new[](size_t size, const std::nothrow_t& tag) noexcept;

void * operator new(size_t size, void *place) noexcept;
void * operator new[](size_t size, void *place) noexcept;

void operator delete(void * ptr) noexcept;
void operator delete[](void * ptr) noexcept;
[[gnu::weak]] void operator delete(void * ptr) noexcept;
[[gnu::weak]] void operator delete[](void * ptr) noexcept;

#if __cplusplus >= 201402L
void operator delete(void* ptr, size_t size) noexcept;
void operator delete[](void * ptr, size_t size) noexcept;
[[gnu::weak]] void operator delete(void* ptr, size_t size) noexcept;
[[gnu::weak]] void operator delete[](void * ptr, size_t size) noexcept;
#endif // __cplusplus >= 201402L

void operator delete(void* ptr, const std::nothrow_t& tag) noexcept;
void operator delete[](void* ptr, const std::nothrow_t& tag) noexcept;
[[gnu::weak]] void operator delete(void* ptr, const std::nothrow_t& tag) noexcept;
[[gnu::weak]] void operator delete[](void* ptr, const std::nothrow_t& tag) noexcept;

void operator delete(void* ptr, void* place) noexcept;
void operator delete[](void* ptr, void* place) noexcept;
Expand Down

0 comments on commit 4e469e0

Please sign in to comment.