update Allocator
This commit is contained in:
parent
04475c3c37
commit
764b67d4d3
|
|
@ -53,8 +53,9 @@ void* GlobalAllocator::Alloc(size_t size)
|
||||||
return ::malloc(size);
|
return ::malloc(size);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GlobalAllocator::Free(void* ptr)
|
void GlobalAllocator::Free(void* ptr, size_t size)
|
||||||
{
|
{
|
||||||
|
KGE_NOT_USED(size);
|
||||||
::free(ptr);
|
::free(ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ public:
|
||||||
|
|
||||||
/// \~chinese
|
/// \~chinese
|
||||||
/// @brief 释放内存
|
/// @brief 释放内存
|
||||||
virtual void Free(void* ptr) = 0;
|
virtual void Free(void* ptr, size_t size) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
/// \~chinese
|
/// \~chinese
|
||||||
|
|
@ -60,9 +60,37 @@ inline void* Alloc()
|
||||||
|
|
||||||
/// \~chinese
|
/// \~chinese
|
||||||
/// @brief 使用当前内存分配器释放内存
|
/// @brief 使用当前内存分配器释放内存
|
||||||
inline void Free(void* ptr)
|
inline void Free(void* ptr, size_t size)
|
||||||
{
|
{
|
||||||
return memory::GetAllocator()->Free(ptr);
|
return memory::GetAllocator()->Free(ptr, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// \~chinese
|
||||||
|
/// @brief 构造对象
|
||||||
|
template <typename _Ty>
|
||||||
|
inline _Ty* Construct(void* addr)
|
||||||
|
{
|
||||||
|
if (addr)
|
||||||
|
{
|
||||||
|
return ::new (addr) _Ty;
|
||||||
|
}
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// \~chinese
|
||||||
|
/// @brief 构造对象
|
||||||
|
template <typename _Ty, typename... _Args>
|
||||||
|
inline _Ty* Construct(void* ptr, _Args&&... args)
|
||||||
|
{
|
||||||
|
return ::new (ptr) _Ty(std::forward<_Args>(args)...);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// \~chinese
|
||||||
|
/// @brief 销毁对象
|
||||||
|
template <typename _Ty, typename... _Args>
|
||||||
|
inline void Destroy(_Ty* ptr)
|
||||||
|
{
|
||||||
|
ptr->~_Ty();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// \~chinese
|
/// \~chinese
|
||||||
|
|
@ -73,7 +101,7 @@ inline _Ty* New()
|
||||||
void* ptr = memory::Alloc<_Ty>();
|
void* ptr = memory::Alloc<_Ty>();
|
||||||
if (ptr)
|
if (ptr)
|
||||||
{
|
{
|
||||||
return ::new (ptr) _Ty;
|
return memory::Construct<_Ty>(ptr);
|
||||||
}
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
@ -86,7 +114,7 @@ inline _Ty* New(_Args&&... args)
|
||||||
void* ptr = memory::Alloc<_Ty>();
|
void* ptr = memory::Alloc<_Ty>();
|
||||||
if (ptr)
|
if (ptr)
|
||||||
{
|
{
|
||||||
return ::new (ptr) _Ty(std::forward<_Args>(args)...);
|
return memory::Construct<_Ty>(ptr, std::forward<_Args>(args)...);
|
||||||
}
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
@ -98,8 +126,8 @@ inline void Delete(_Ty* ptr)
|
||||||
{
|
{
|
||||||
if (ptr)
|
if (ptr)
|
||||||
{
|
{
|
||||||
ptr->~_Ty();
|
memory::Destroy<_Ty>(ptr);
|
||||||
memory::Free(ptr);
|
memory::Free(ptr, sizeof(_Ty));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -114,7 +142,7 @@ public:
|
||||||
|
|
||||||
/// \~chinese
|
/// \~chinese
|
||||||
/// @brief 释放内存
|
/// @brief 释放内存
|
||||||
virtual void Free(void* ptr) override;
|
virtual void Free(void* ptr, size_t size) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
/// \~chinese
|
/// \~chinese
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue