BAN: BAN/Memory.h now provides the operator new and delete

This commit is contained in:
Bananymous 2023-01-10 17:51:33 +02:00
parent c6467b8ebc
commit 85068e27d6
2 changed files with 29 additions and 10 deletions

View File

@ -15,4 +15,32 @@ namespace BAN
static constexpr auto& allocator = malloc; static constexpr auto& allocator = malloc;
static constexpr auto& deallocator = free; static constexpr auto& deallocator = free;
#endif #endif
template<typename T>
class OwnPtr
{
public:
template<typename... Args>
OwnPtr(const Args&... args)
{
m_pointer = new T(args...);
}
~OwnPtr()
{
delete m_pointer;
}
private:
T* m_pointer = nullptr;
};
} }
inline void* operator new(size_t size) { return BAN::allocator(size); }
inline void* operator new[](size_t size) { return BAN::allocator(size); }
inline void operator delete(void* addr) { BAN::deallocator(addr); }
inline void operator delete[](void* addr) { BAN::deallocator(addr); }
inline void operator delete(void* addr, size_t) { BAN::deallocator(addr); }
inline void operator delete[](void* addr, size_t) { BAN::deallocator(addr); }

View File

@ -8,12 +8,3 @@ void kmalloc_dump_nodes();
void* kmalloc_eternal(size_t); void* kmalloc_eternal(size_t);
void* kmalloc(size_t); void* kmalloc(size_t);
void kfree(void*); void kfree(void*);
inline void* operator new(size_t size) { return kmalloc(size); }
inline void* operator new[](size_t size) { return kmalloc(size); }
inline void operator delete(void* addr) { kfree(addr); }
inline void operator delete[](void* addr) { kfree(addr); }
inline void operator delete(void* addr, size_t) { kfree(addr); }
inline void operator delete[](void* addr, size_t) { kfree(addr); }