[Перевод] Умные указатели в современном C++ с точки зрения новичка
|
|
Среда, 21 Декабря 2022 г. 15:34
+ в цитатник
Новые (?) пути управления памятью
Указатели в языках C и C++ — те еще штучки. Они чрезвычайно мощные, но в то же время такие опасные: достаточно небольшого недосмотра, чтобы сломать все ваше приложение. Проблема в том, что управление указателями полностью зависит от вас. За каждым динамическим выделением объекта (например, new T) должно следовать ручное удаление (например, delete T). Забудете это сделать, и в итоге получите хорошенькую утечку памяти.
Более того, динамически выделяемые массивы (например, new T[N]) необходимо удалять с помощью другого оператора (например, delete[]). Поэтому приходится мысленно отслеживать, что вы выделили, и соответственно вызывать нужный оператор. Ошибки с выбором формы приводят к
неопределенному поведению, чего при работе на C++ нужно избегать любой ценой.
Другая деликатная проблема заключается во владении. Сторонняя функция возвращает указатель: а не динамически ли были выделены эти данные? Если да, то кто отвечает за очистку? Невозможно получить такую информацию, просто посмотрев на возвращаемый тип.
Читать дальше → https://habr.com/ru/post/706866/?utm_source=habrahabr&utm_medium=rss&utm_campaign=706866
Метки:
Блог компании Издательский дом «Питер»
программирование
проектирование и рефакторинг
ООП
С++
-
Запись понравилась
-
0
Процитировали
-
0
Сохранили
-