| Классы | |
| class | void_alloc | 
| Вспомогательный класс для реализации fixed_alloc. Подробнее... | |
| Функции | |
| void | get_mem (void *&head, size_t type_sz) | 
| Запрашивает у системы память размером (около) CHUNK_SIZE и создает в ней связный список свободных кусков размера type_sz. | |
| 
 | ||||||||||||
| Запрашивает у системы память размером (около) CHUNK_SIZE и создает в ней связный список свободных кусков размера type_sz. Голова списка возвращается в параметре head. Для работоспособности функции должно выполняться следующее условие: type_sz>=sizeof(void*). В случае нехватки памяти возбуждает std::bad_alloc. Константа CHUNK_SIZE определена в файле-реализации. См. определение в файле fix_alloc.cpp строка 53 Перекрестные ссылки CHUNK_SIZE. Используется в fixed_alloc_private::void_alloc< SIZE >::alloc() и sized_alloc::alloc(). 
 00054 {
00055  size_t n=(CHUNK_SIZE>type_sz) ? CHUNK_SIZE/type_sz : 1;
00056  head=operator new(n*type_sz);
00057 
00058  char* last=(char*)head+(n-1)*type_sz;
00059  for (char* ptr=(char*)head; ; ptr+=type_sz) {
00060      if (ptr!=last) *(void**)ptr=ptr+type_sz;
00061      else {
00062           *(void**)ptr=0;
00063           break;
00064      }
00065  }
00066 }
 | 
 1.3
1.3