Всем привет!
Вопрос — можно ли заставить работать бустовский shared_ptr с моим распределителем памяти?
Если да, то каким образом? Переопределять глобальный delete?
Или изобретать новый велосипед?
intrusive_ptr как я понимаю не подходит, ибо распределитель памяти должен работать и для простых типов (int, char).
Здравствуйте, Patalog, Вы писали:
P>Всем привет!
P>Вопрос — можно ли заставить работать бустовский shared_ptr с моим распределителем памяти?
P>Если да, то каким образом? Переопределять глобальный delete?
P>Или изобретать новый велосипед?
P>intrusive_ptr как я понимаю не подходит, ибо распределитель памяти должен работать и для простых типов (int, char).
template<typename T>
struct allocator
{
T* alloc(size_t count) const
{
return static_cast<T*>(std::malloc(sizeof(T)*count));
};
void free(T* p) const
{
std::free(p);
};
void operator()(T* p) const
{
free(p);
}
};
boost:: shared_ptr<int> p;
allocator<int> a;
p.reset(a.alloc(5),a );
Здравствуйте, korzhik, Вы писали:
хъ
Мда, проглядел, что deleter можно как параметр передавать. Тщательнее нужно быть...
Спасибо!