Необработанный указатель не становится владельцем ресурса, на который он указывает. Когда указатель выходит из области видимости, объект, на который он указал, остается неизменным. Часто вам нужна какая-то семантика владения, при которой, когда указатель выходит из области видимости, объект, на который он указывает, должен быть либо удален, либо, по крайней мере, уведомлен о том, что указатель на него меньше на один.
Вот что делают умные указатели.
A shared_ptr
реализует подсчет ссылок, поэтому, когда все указатели на объект уничтожаются, объект удаляется.
Другие, такие как scoped_ptr
или unique_ptr
или auto_ptr
, реализуют различные формы исключительной собственности. Когда scoped_ptr
уничтожается, он удаляет объект, на который он указывает.