Титульная страница   Пространства имен   Иерархия классов   Алфавитный указатель   Классы   Файлы   Члены пространства имен   Члены классов   Члены файла  

Пространство имен fixed_alloc_private

личное пространство имен класса fixed_alloc, содержащее детали реализации Подробнее...


Классы

class  void_alloc
 Вспомогательный класс для реализации fixed_alloc. Подробнее...


Функции

void get_mem (void *&head, size_t type_sz)
 Запрашивает у системы память размером (около) CHUNK_SIZE и создает в ней связный список свободных кусков размера type_sz.


Подробное описание

личное пространство имен класса fixed_alloc, содержащее детали реализации

Функции

void fixed_alloc_private::get_mem void *&  head,
size_t  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 }


Документация по ftext. Последние изменения: Sat Mar 20 17:58:16 2004. Создано системой doxygen1.3