Ejemplo n.º 1
0
bool Allocator::_Check() const
{
	bool res = true;

	for (BlockNode* pNode = m_pBlocks ; pNode != NULL ; pNode = pNode->pNext)
	{
		Header* pHeader = reinterpret_cast<Header*>(pNode->pBlock);
		Footer* pFooter = reinterpret_cast<Footer*>(pNode->pBlock+sizeof(Header)+pHeader->m_iSize);

		res &= pHeader->Check();
		res &= pFooter->Check();
	}

	return true;
}
Ejemplo n.º 2
0
void Allocator::_Free(void* ptr, const char* file_name, unsigned int line_num)
{
	//LOG("%s:%d  free(%p)\n", file_name, line_num, ptr);

	byte* pBlock = (byte*)ptr - sizeof(Header);

	Header* pHeader = reinterpret_cast<Header*>(pBlock);
	Footer* pFooter = reinterpret_cast<Footer*>((byte*)ptr+pHeader->m_iSize);

	ASSERT(pHeader->Check());
	ASSERT(pFooter->Check());

	ASSERT(pHeader->m_pBlockNode != NULL);
	RemBlock(pBlock);

	free(pBlock);
}