Skip to content

Commit 4e469e0

Browse files
Allow overriding selected operator new and delete functions
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.
1 parent 07b6bd1 commit 4e469e0

File tree

1 file changed

+10
-10
lines changed
  • cores/arduino

1 file changed

+10
-10
lines changed

Diff for: cores/arduino/new

+10-10
Original file line numberDiff line numberDiff line change
@@ -33,25 +33,25 @@ namespace std {
3333
new_handler get_new_handler() noexcept;
3434
} // namespace std
3535

36-
void * operator new(size_t size);
37-
void * operator new[](size_t size);
36+
[[gnu::weak]] void * operator new(size_t size);
37+
[[gnu::weak]] void * operator new[](size_t size);
3838

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

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

45-
void operator delete(void * ptr) noexcept;
46-
void operator delete[](void * ptr) noexcept;
45+
[[gnu::weak]] void operator delete(void * ptr) noexcept;
46+
[[gnu::weak]] void operator delete[](void * ptr) noexcept;
4747

4848
#if __cplusplus >= 201402L
49-
void operator delete(void* ptr, size_t size) noexcept;
50-
void operator delete[](void * ptr, size_t size) noexcept;
49+
[[gnu::weak]] void operator delete(void* ptr, size_t size) noexcept;
50+
[[gnu::weak]] void operator delete[](void * ptr, size_t size) noexcept;
5151
#endif // __cplusplus >= 201402L
5252

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

5656
void operator delete(void* ptr, void* place) noexcept;
5757
void operator delete[](void* ptr, void* place) noexcept;

0 commit comments

Comments
 (0)