Boost logo

Boost :

From: Rogier van Dalen (R.C.van.Dalen_at_[hidden])
Date: 2004-04-23 04:59:36


Bronek Kozicki <brok <at> rubikon.pl> writes:
> Peter Dimov <pdimov <at> mmltd.net> wrote:
> > Nothing. The implementation of shared_ptr needs a serious redesign WRT
> > thread safety, which is planned but requires free time on my part,
> > which is currently in short supply, although I've got some ordered.
>
> Are there any chance of using reference linking instead of counter
> allocated on heap, or at least some serious optimization (ie. memory
> pool) in regard to this heap allocation?

FWIW: I have a smart pointer class similar to the boost one, in which the
ref_count class can contain the object, thus requiring one allocation only:

template <class T> class ref_count {
    char data [sizeof(T)];

    long strong_count;
    long weak_count;
    // ....

public:
    // ....
};

There are two major disadvantages to this construction:
1. Quite elaborate code is needed to fake parameter forwarding.
2. The memory needed for T can be deallocated only when the memory for the
counter is (i.e. when weak_count becomes zero).

Rogier


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk