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);