forked from Bananymous/banan-os
BAN: BAN/Memory.h now provides the operator new and delete
This commit is contained in:
parent
c6467b8ebc
commit
85068e27d6
|
@ -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); }
|
|
@ -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); }
|
|
Loading…
Reference in New Issue