Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > выделение памяти в определенной области


Автор: rukudias 8.5.2009, 00:24
Привет всем!
Можно ли какимто образом имея указатель на обл памяти 
определенного размера выделять в ней подобласти 
 ну к примеру 

Код

int allsize=1000;
int subsize=10;
void *ptr=malloc(allsize);

void * megafunction(ptr,subsize);//выделила 10 байт в определ обл 



интерисует реализация функции megafunction

Автор: baldina 8.5.2009, 01:08
мегавопрос smile

Код

void megainit (void *ptr, size_t size)
{
   size_t *control_block = (size_t*)ptr;
   control_block[0] = size;
   control_block[1] = 0;
}

void * megafunction (void *ptr, size_t subsize)
{
   size_t *control_block = (size_t*)ptr;

   if (subsize == 0)
     subsize = 1; // адреса выделяемых блоков должны различаться

   if (control_block[1] + subsize > control_block[0])
      return 0;

   control_block[1] += subsize;
   return (char*)ptr + sizeof (size_t)*2 + control_block[1];
}


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)