Ejemplo n.º 1
0
MemoryBlockAllocator::MemoryBlockAllocator(size_t  size, size_t counts, Bitfield* pBitfield, void* pAddress, NewAlignment alignment) :
_pBitfield(pBitfield), _pBlocks(nullptr), _pMemoryAddress(pAddress), _blockSize(size), _blockCounts(counts),
_alignment(alignment)
{
	_pBlocks = (MemoryBlock*)align_new<MemoryBlock>(_blockCounts, _alignment);
	SetMem((uint8_t*)_pBlocks, _blockCounts*sizeof(MemoryBlock), 0);
	MemoryBlock* pTtemp = _pBlocks;
	for (unsigned int i = 0; i < _blockCounts; i++)
	{
		char* paddress = static_cast<char*>(_pMemoryAddress)+i*_blockSize;
		pTtemp->InitBlock(_blockSize, paddress);
		pTtemp = align_get_next<MemoryBlock>(pTtemp, _alignment);
	}
}