From 768a535eeaf8cce4ea041445b089703c514f8dfa Mon Sep 17 00:00:00 2001 From: fallenoak Date: Sun, 16 Nov 2025 07:05:31 -0600 Subject: [PATCH] feat(memory): add additional operator overloads --- storm/Memory.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/storm/Memory.cpp b/storm/Memory.cpp index d79fcac..cbfb52b 100644 --- a/storm/Memory.cpp +++ b/storm/Memory.cpp @@ -8,22 +8,42 @@ void* operator new(size_t bytes) { return SMemAlloc(bytes, "new", -1, 0x0); } +void* operator new(size_t bytes, const std::nothrow_t&) noexcept { + return SMemAlloc(bytes, "new(nothrow_t)", -1, 0x0); +} + void* operator new[](size_t bytes) { return SMemAlloc(bytes, "new[]", -1, 0x0); } +void* operator new[](size_t bytes, const std::nothrow_t&) noexcept { + return SMemAlloc(bytes, "new[](nothrow_t)", -1, 0x0); +} + void operator delete(void* ptr) noexcept { if (ptr) { SMemFree(ptr, "delete", -1, 0x0); } } +void operator delete(void* ptr, const std::nothrow_t&) noexcept { + if (ptr) { + SMemFree(ptr, "delete(nothrow_t)", -1, 0x0); + } +} + void operator delete[](void* ptr) noexcept { if (ptr) { SMemFree(ptr, "delete[]", -1, 0x0); } } +void operator delete[](void* ptr, const std::nothrow_t&) noexcept { + if (ptr) { + SMemFree(ptr, "delete[](nothrow_t)", -1, 0x0); + } +} + void* STORMAPI SMemAlloc(size_t bytes, const char* filename, int32_t linenumber, uint32_t flags) { size_t alignedBytes = (bytes + (ALIGNMENT - 1)) & ~(ALIGNMENT - 1);