The advantage of reference linking over reference counting is that the former does not use extra free store, which makes it more reliable: Creating a reference-linked smart pointer cannot fail. The disadvantage is that reference linking needs more memory for its bookkeeping (three pointers versus only one pointer plus one integer). Also, reference counting should be a bit speedier—when you copy smart pointers, only an indirection and an increment are needed. The list management is slightly more elaborate. In conclusion, you should use reference linking only when the free store is scarce. Otherwise, prefer reference counting.
This is a quote from Modern C++ Design: Generic Programming and Design Pattern Applied. I do not understand why reference linking based smart pointer does not use extra free store and then become more reliable i.e. never fail? Could anyone provide a bit explanation on this? Thanks!