[*] Fix main process heap fragmentation caused by shared pointer blocks, always allocate from within the heap object
This commit is contained in:
parent
46ef3231a2
commit
124e9d1d0a
@ -13,6 +13,9 @@ namespace Aurora::Memory
|
||||
static const AuUInt8 kHeapSize = 128;
|
||||
static const AuUInt8 kHeap2Size = 255;
|
||||
|
||||
template <class T>
|
||||
struct CppHeapWrapper;
|
||||
|
||||
struct Heap
|
||||
{
|
||||
virtual AuSPtr<Heap> AllocateDivision(AuUInt32 heap, AuUInt32 alignment = 32) = 0;
|
||||
@ -230,7 +233,7 @@ namespace Aurora::Memory
|
||||
auto pTThat = (T *)(pPtr + kAlignment);
|
||||
AUROXTL_COMMODITY_TRY
|
||||
{
|
||||
return AuSPtr<T>(pTThat, &Heap::DeleteThat<T>);
|
||||
return AuSPtr<T>(pTThat, &Heap::DeleteThat<T>, CppHeapWrapper<T> { this });
|
||||
}
|
||||
AUROXTL_COMMODITY_CATCH
|
||||
{
|
||||
@ -340,7 +343,7 @@ namespace Aurora::Memory
|
||||
auto pTThat = (T *)(pPtr + kAlignment);
|
||||
AUROXTL_COMMODITY_TRY
|
||||
{
|
||||
return AuSPtr<T>(pTThat, &Heap::DeleteThatArray<T>);
|
||||
return AuSPtr<T>(pTThat, &Heap::DeleteThatArray<T>, CppHeapWrapper<T> { this });
|
||||
}
|
||||
AUROXTL_COMMODITY_CATCH
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user