void* allocInNewBlock(size_t bytes) { size_t capacity = _nextBlockCapacity; if (bytes > capacity) capacity = bytes; if (!addNewBlock(capacity)) return NULL; _nextBlockCapacity *= 2; return allocInHead(bytes); }
void* allocInNewBlock(size_t bytes) { size_t capacity = FIRST_BLOCK_CAPACITY; if (_head != NULL) capacity = _head->capacity * 2; if (bytes > capacity) capacity = bytes; if (!addNewBlock(capacity)) return NULL; return allocInHead(bytes); }
virtual void* alloc(size_t bytes) { alignNextAlloc(); return canAllocInHead(bytes) ? allocInHead(bytes) : allocInNewBlock(bytes); }