Yes.
Compared with the "smart pointer" techniques (see [16.22]),
the two kinds of garbage collector techniques (see
[16.27]) are:
- less portable
- usually more efficient (especially when the average object size is
small or in multithreaded environments)
- able to handle "cycles" in the data (reference counting techniques
normally "leak" if the data structures can form a cycle)
- sometimes leak other objects (since the garbage collectors are
necessarily conservative, they sometimes see a random bit pattern that appears
to be a pointer into an allocation, especially if the allocation is large;
this can allow the allocation to leak)
- work better with existing libraries (since smart pointers need to
be used explicitly, they may be hard to integrate with existing
libraries)