Я пишу простой диспетчер памяти. Я пытаюсь упростить эту функцию, чтобы другие моглипросто добавить объект, который они хотят выделить в качестве первого параметра. Диспетчер памяти будет выделить пространство для этого объекта и установить указатель объекта на выделенное пространство . Проблема в том, что я не уверен, как это сделать, так что примерно любой тип объекта может быть передан, без необходимости использовать его как сумасшедший, чтобы заставить его работать.Передача объектов в функцию с помощью указателя void
Вот функция:
bool MemoryManager::Allocate(void** data, unsigned int allocSize, bool isArray)
{
if((m_Heap.m_Pool == nullptr) || (*data != NULL))
return false;
if(isArray)
allocSize += sizeof(unsigned int) * 4;
void* mem = m_Heap.Allocate(allocSize);
if(mem)
{
*data = mem;
return true;
}
else
return false;
}
Это в настоящее время, как я должен назвать его, чтобы заставить его работать:
int* Test = NULL;
MemoryManager::GetInstance()->Allocate((void**)(&Test), sizeof(int), false);
Любая помощь или руководство будет весьма признателен ! :)
Используйте шаблон и передайте его по ссылке? – chris