make_shared underused

Daniel danlrobertson89 at gmail.com
Mon Oct 26 09:24:07 PDT 2015


> A quick survey of the LO code shows that this idiom is underutilized.

Agreed! Thanks for bringing this up, I've noticed this as well.

> The use of make_shared (and family) to construct shared_ptr (and other)
> instances is highly encouraged because of its benefits over using new and
> smart-pointer ctor or reset.

Very true, make_shared should result in one heap alloc vs. new + the
shared_ptr constructor which uses at least two.

However, if make_shared is used and we're working with a single block,
if we're also using weak_ptrs, if I'm correct the object will be destroyed
once the last strong ref is deleted, but will not be deallocated until the
last weak ref is deleted. I haven't seen many uses of weak_ptrs in LO, but
if we have code using weak refs that could outlive all of the strong
refs depending on your goals it could be better to stick with new + the
shared_ptr constructor.

Daniel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: Digital signature
URL: <http://lists.freedesktop.org/archives/libreoffice/attachments/20151026/4baf30aa/attachment.sig>


More information about the LibreOffice mailing list