Boost logo

Ublas :

Subject: Re: [ublas] freeing uBLAS arrays
From: Eduardo Hernandez (errhernandez_at_[hidden])
Date: 2017-09-20 15:09:10

Thank you Nasos,

Just to be clear: suppose I have a class with a data member such as
boost::numeric::ublas::vector<double> my_vec; then I create an instance of
the class, and when this instance goes out of scope (its destructor is
called), I can rely on the fact that my_vec will delete itself and the
memory it occupies will be freed, right?



On 20 September 2017 at 16:47, Nasos Iliopoulos via ublas <
ublas_at_[hidden]> wrote:

> If you created it like:
> boost::numeric:ublas::vector<double> my_vec;
> /// whatever
> it will deallocate itself. This is the preferred way.
> if you need a pointer ( generally try to avoid this unless you need some
> sort of dynamic allocation):
> auto my_vec = new boost::numeric:ublas::vector<double>();
> you better use a a shared_ptr or unique_ptr depending on what you are
> trying to do, like:
> auto my_vec = std::make_unique< boost::numeric:ublas::vector<double> >();
> or
> auto my_vec = std::make_shared< boost::numeric:ublas::vector<double> >();
> // now my_vec will again deallocate itself when it goes out of scope.
> Typical use case for the unique pointer is when you want to use it in only
> in one place. The second one (shared) is useful when you want to pass the
> vector around (in other objects or functions).
> -N
> On 09/20/2017 10:29 AM, Eduardo Hernandez via ublas wrote:
> Please excuse this probably simple question, but I couldn't find the
> answer anywhere. The question is: do uBLAS arrays (e.g. vector, matrix)
> deallocate themselves when going out of scope, or should one use shared_ptr
> s to them to make sure they are deallocated?
> Thanks, and sorry if this is trivial; I'm new to boost, and also to c++ ;-)
> _______________________________________________
> ublas mailing list
> ublas_at_[hidden]
> Sent to: errhernandez_at_[hidden]