Введение в smart_ptr

Указатели в C и C++ дикие звери. Они чрезвычайно мощные, но в то же время такие опасные: небольшой недосмотр может нанести ущерб всему вашему приложению. Их основная проблема заключается в том, что вы и только вы должны следить за корректной работой с ними. Каждый динамически созданный объект (т.е. new T) должен сопровождаться ручным удалением (т.е. delete T). Забудьте об этом, и у вас получится хорошая утечка памяти.

Кроме того, динамически выделенные массивы (т.е. new T[N]) должны быть удалены с помощью другого оператора (т.е. delete[]). Это заставляет вас мысленно следить за тем, что вы выделили, и вызывать соответствующий оператор. Использование неправильного оператора приводит к неопределенному поведению, что ни в коем случае нельзя допускать при работе в C++.

Читать далее