Разница между простыми и интеллектуальными указателями заключается в том, что простые указатели требуют ручного освобождения памяти, за каждым динамическим выделением объекта должно следовать ручное удаление. 5 При использовании простых указателей невозможно без дополнительных комментариев или изучения кода определить, какой указатель объектом владеет, а какой — только использует. 1
Интеллектуальные указатели (smart pointers) обеспечивают автоматическое управление памятью. 35 Когда умный указатель больше не используется, то есть выходит из области видимости, память, на которую он указывает, автоматически высвобождается. 5 Таким образом, smart-указатели позволяют упростить и обезопасить управление памятью. 3
Ещё одно различие заключается в том, что простые указатели только заимствуют данные, в то время как интеллектуальные указатели в большинстве случаев владеют данными, на которые они указывают. 4 То есть, когда умный указатель удаляется, то и данные, на которые он указывает, удаляются тоже. 4