shared_ptr +allocator
От: Patalog Россия  
Дата: 23.09.04 12:25
Оценка:
Всем привет!

Вопрос — можно ли заставить работать бустовский shared_ptr с моим распределителем памяти?
Если да, то каким образом? Переопределять глобальный delete?
Или изобретать новый велосипед?
intrusive_ptr как я понимаю не подходит, ибо распределитель памяти должен работать и для простых типов (int, char).
Почетный кавалер ордена Совка.
Re: shared_ptr +allocator
От: korzhik Россия  
Дата: 23.09.04 12:35
Оценка: 9 (1)
Здравствуйте, 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 );
Re[2]: shared_ptr +allocator
От: Patalog Россия  
Дата: 23.09.04 12:52
Оценка:
Здравствуйте, korzhik, Вы писали:

хъ

Мда, проглядел, что deleter можно как параметр передавать. Тщательнее нужно быть...
Спасибо!
Почетный кавалер ордена Совка.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.