Boost logo

Boost Users :

From: Seweryn Habdank-Wojewódzki (shw_at_[hidden])
Date: 2007-06-16 17:12:08


HI!

Is there any opportunity, to avoid double allocation of memory using pointer
containers?
I have simple code (below) and I want allocate memory for objects, construct
them, and _move_ (transfer) pointer to the container.
Valgrind shows me that there are made 2 alocations even if I am creating only
1 object.

==20121== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 7 from 1)
==20121== malloc/free: in use at exit: 0 bytes in 0 blocks.
==20121== malloc/free: 2 allocs, 2 frees, 8 bytes allocated.

What is happening If the object is huge? Is there any way to transfer the
pointer?

Regards.

#include <boost/ptr_container/ptr_vector.hpp>

class Foo {
public:
    Foo (int const i) : i_ (i) {}
private:
    int i_;
};

Foo * ret_ptr(int const i) {
    return new Foo(i);
}

int main() {
    boost::ptr_vector<Foo> vfoo;
    for (int i = 0; i < 1; ++i)
        vfoo.push_back (ret_ptr(i));
}

-- 
|\/\/|   Seweryn Habdank-Wojewódzki
 \/\/ 

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net