Smart-pointry a podobné legrácky jako garbage-colectory mají ale větší réžii, což IMHO není moc žádoucí. Proto je lepší spíše nějaký ten memory leak checker, aplikace se odladí a pak releasuje.
V případech, kdy není třeba těžce optimalizovat, jako např. GUI (ve srovnání s výkonnou částí programu), jsou smart-pointery snadnou volbou, jak zamezit vzniku memory-leaků. A v oblasti multi-threadingu je reference-counting neocenitelnou záležitostí (a stejně se dojde k podobné, ne-li stejné implementaci).
Ve větších projektech pak nějaký memory leak checker je sice hezký, ale jeho výsledky nemusí odpovídat reálnému stavu, nebo jsou programátoři na úrovni, že nic takového nepoužívají (co to je memory-leak?), či nálezy ignorují... A nejhorší situace je, že se takové utilitky vůbec nemůžou používat, protože prostě není čas a pak je lepší garbage-collector např. na úrovni smart-pointerů. (Ale povídejte jim to, když to nejlepší, co z C++ viděli, je klíčové slovo class :-))