← Back to team overview

dolfin team mailing list archive

Re: smart pointers

 


Anders Logg wrote:
> On Mon, Oct 23, 2006 at 02:57:27PM +0200, Garth N. Wells wrote:
>> What does everyone think about using some of the smart pointers from
>> Boost? Instead of
>>
>>   int* nodes = new int[element.spacedim()];
>>   element.nodemap(nodes, *cell, mesh);
>>   /*
>>      Do something
>>   */
>>    delete [] nodes;
>>
>> we would have
>>
>>   boost::scoped_array<int> nodes( new int[element.spacedim()] );
>>   element.nodemap(nodes.get(), *cell, mesh);
>>   /*
>>      Do something
>>   */
>>
>> In the end, it's pretty similar to std::vector, except it's a bit more
>> efficient since it's not designed to change size and we can access the
>> underlying pointer with get().
>>
>> Garth
> 
> To me, it looks like code obfuscation. If you compare the two ways of
> writing, you remove
> 
>   "int*", "delete [] nodes"
> 
> and add
> 
>   "boost::scoped_array<int>", ".get()", ".get()" (get in two places here)
> 

I agree that it doesn't do a lot for readability. The advantage is that
you don't have to worry about "delete" and the consequent memory leak if
you forget it.

Smart pointers would definitely by useful for sub-functions which refer
to the same vector.

Garth

> There are probably places where we could make good use of smart
> pointers, but here it looks to me like it just adds complexity.
> 
> /Anders
> _______________________________________________
> DOLFIN-dev mailing list
> DOLFIN-dev@xxxxxxxxxx
> http://www.fenics.org/mailman/listinfo/dolfin-dev
> 




Follow ups

References