kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #05502
Re: Boost include files.
> I probably would never personally use shared_ptr because in my mind it
> is slightly beyond what an average C++ programmer uses on a day to day
> basis, and it obscures the clear notion of "object ownership".
>
> I have never (I am old, this is a long long time, and countless lines of
> code) been in a position where I could not assign object ownership
> clearly to one container over another. If ever this became obscure, I
> would probably backup and take another look.
>
> Object ownership is something to keep one's eye on.
>
>
> Dick
>
This was an opinion I expressed about shared_ptr, which hopes to relieve
me of having to think clearly about object ownership. I have no problem
thinking about object ownership, so I have this opinion about
shared_ptr. IMO, shared_ptr is a solution without a sufficiently large
problem. Managing object ownership is not a significantly difficult
design responsibility, and has always been part of C/C++ programming.
I don't feel the same way about auto_ptr, which is *one* reasonable way
to deal with heap allocated objects in the face of exceptions. If no
exceptions can occur, auto_ptr is not useful. If exceptions, then this
is a sufficiently large problem to justify auto_ptr, but it is not the
only solution. auto_ptr is one reasonable and simple solution. Another
one that can also work is to simply stash the pointer soon after heap
instantiation into the object's eventual owner, and then the problem
gets moved to the owner. When the owner's destructor gets called, it
deletes the newly instantiated owned object. Either solution is better
than simply leaving the pointer on the heap and not copying it to the
owner and not using auto_ptr, and then experiencing a thrown exception
in that function that leaves the object exposed to a memory leak.
Just wanted to clarify:
auto_ptr: good sometimes,
if you cannot copy pointer to the eventual owner soon enough,
shared_ptr: not worth the cost.
Probably few care about my opinion anyway. There's never a shortage of
opinions, in my opinion.
Dick
Follow ups
References