Alloc a memory block to store T.
- Returns
- Returns T pointer.
Reused space.
Alloc memory if there is no enough space.
Alloc 128 KB / 8KB = 16pages memory.
Pop current memoryblock as T.
Call Construct function of T in place.
Definition at line 177 of file ObjectPool.h.
178 {
180
185 {
190 }
191 else
192 {
197 {
199
204 if (!memoryBlock)
205 {
206 SPICES_CORE_ERROR("Memory alloc failed")
207
208 return nullptr;
209 }
210
211 m_pointer = static_cast<
char*>(memoryBlock);
213 }
214
219
222 }
223
227 new(obj)T;
228
229 return obj;
230 }
static void *& PointerSpace(void *obj)
Get object first 4/8 bytes as a pointer.
void * m_FreeList
freelist.
scl::vector< void * > m_Memories
This objectPoll allocated memories.
size_t m_ExpandBytes
Expand bytes.
size_t m_SpareBytes
Spare bytes of this objectPool.
char * m_pointer
objectPool current memory pointer.
static void * SystemAlloc(size_t kpage)
Alloc memory from system.
References Spices::ObjectPool< T >::m_FreeList, Spices::ObjectPool< T >::m_pointer, and Spices::MemoryPool::PointerSpace().
Referenced by Spices::ObjectPool< T >::ThreadNew().