Re: [Audacity-devel] Smart pointers?
A free multi-track audio editor and recorder
Brought to you by:
aosiniao
From: Roger D. <rb...@cs...> - 2014-08-20 15:03:38
|
Great example. Thanks. -Roger On 8/20/14 10:55 AM, Paul L wrote: > I also say it is preferable to make member variables of classes smart > pointers. Besides having a bit less code to read (because the destructor is > often empty, the smart pointer member destructors doing all the work), > consider the constructor: > > X::X() > : m1(new Y) > : m2(new Z) > { > DoSomethingElse(); > } > > where m1 and m2 are smart pointers. Suppose m1 has been initialized. But > an exception could be thrown constructing m2, or in DoSomethingElse(). C++ > rules say the X object is not fully constructed until the constructor > function finishes, and if it is not fully constructed, then its destructor > will not be called. But destructors of base classes and members, for which > the constructor functions completed, will be called. > > Therefore you don't leak the memory allocated at m1. > > The alternative with dumb pointers that relies on > > X::~X() { delete m1; delete m2; } > > for cleanup would leak memory in this case of aborted construction. > > > > > > > -- > View this message in context: http://audacity.238276.n2.nabble.com/Smart-pointers-tp7562826p7562911.html > Sent from the audacity-devel mailing list archive at Nabble.com. > > ------------------------------------------------------------------------------ > Slashdot TV. > Video for Nerds. Stuff that matters. > http://tv.slashdot.org/ > _______________________________________________ > audacity-devel mailing list > aud...@li... > https://lists.sourceforge.net/lists/listinfo/audacity-devel |