#include <fix_alloc.hpp>
Открытые статические члены | |
| void * | alloc (size_t size) |
| Выделяет память указанного размера или возбуждает std::bad_alloc. | |
| void | free (void *ptr, size_t size) |
| Освобождает ранее выделенную память. | |
Его отличие от класса fixed_alloc состоит в том, что размер запрашиваемой памяти задается при каждом вызове функций alloc() и free(), в то время как в fixed_alloc он является параметром шаблона и, следовательно, жестко зафиксирован (что делает fixed_alloc чуть более производительным). Класс sized_alloc следует применять для реализации распределителей памяти базовых классов (с обязательным виртуальным деструктором), которые наследуются классами производными. Дело в том, что размер объекта производного класса, как правило, больше, так что определенный в классе распределитель памяти должен быть объявлен с дополнительным параметром size_t, чье значение должно передаваться в alloc() и free().
См. определение в файле fix_alloc.hpp строка 128
|
|
Выделяет память указанного размера или возбуждает std::bad_alloc. Алгоритм работы полностью аналогичен алгоритму класса fixed_alloc, за тем исключением, что в случае size>MAX_SIZE память будет выделена с помощью operator new(). Константа MAX_SIZE определена в файле-реализации. См. определение в файле fix_alloc.cpp строка 68 Перекрестные ссылки fixed_alloc_private::get_mem(), heads, HEADS_NUM и SVP.
00069 {
00070 size_t index=(size+SVP-1)/SVP;
00071 if (index>=HEADS_NUM) return operator new(size);
00072
00073 void*& head=heads[index];
00074 if (!head) fixed_alloc_private::get_mem(head, index*SVP);
00075
00076 void* ret=head;
00077 head=*(void**)head;
00078
00079 return ret;
00080 }
|
|
||||||||||||
|
Освобождает ранее выделенную память. Алгоритм работы полностью аналогичен алгоритму класса fixed_alloc, за тем исключением, что в случае size>MAX_SIZE память действительно освобождается (посредством вызова operator delete(ptr)). Константа MAX_SIZE определена в файле-реализации. См. определение в файле fix_alloc.cpp строка 82 Перекрестные ссылки heads, HEADS_NUM и SVP.
|
1.3