#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.
|