История изменений
Исправление eao197, (текущая версия) :
Например «ручное».
Ручное управление памятью характеризуется тем, что моменты освобождения памяти явно определяются разработчиком. Т.е. программист вынужден решать, когда память больше не нужна. При этом он должен решить еще одну чрезвычайно важную задачу: обеспечение корректного значения указателей, которые остаются жить (т.е. не должно остаться ни одного живого указателя, который бы продолжал указывать на освобожденный кусок).
Эти вопросы решаются на этапе проектирования. После чего в дело вступает конкретная техника. Как то: ручной вызов new/delete, использование тех или иных видов умных указателей, использование пулов/арен и т.д. Однако, принципиально это уже не столь важно, как сама необходимость отслеживать моменты удаления ставших ненужными объектов.
Тогда как в языках с нормальным точным GC ситуация совсем другая. У программиста необходимость явно отмечать моменты, когда какая-то группа объектов становится больше не нужна, возникают гораздо реже. А задачи следить за корректностью ссылок, которые могут указывать на удаленные объекты, нет в принципе.
Так вот, включение в новые стандарты C++ пары-тройки видов «умных» указателей никак не устраняет необходимость ручного управления памятью в C++.
Исходная версия eao197, :
Например «ручное».
Ручное управление памятью характеризуется тем, что моменты ее освобождения явно определяются разработчиком. Т.е. программист вынужден решать, когда память больше не нужна. При этом он должен решить еще одну чрезвычайно важную задачу: обеспечение корректного значения указателей, которые остаются жить (т.е. не должно остаться ни одного живого указателя, который бы продолжал указывать на освобожденный кусок).
Эти вопросы решаются на этапе проектирования. После чего в дело вступает конкретная техника. Как то: ручной вызов new/delete, использование тех или иных видов умных указателей, использование пулов/арен и т.д. Однако, принципиально это уже не столь важно, как сама необходимость отслеживать моменты удаления ставших ненужными объектов.
Тогда как в языках с нормальным точным GC ситуация совсем другая. У программиста необходимость явно отмечать моменты, когда какая-то группа объектов становится больше не нужна, возникают гораздо реже. А задачи следить за корректностью ссылок, которые могут указывать на удаленные объекты, нет в принципе.
Так вот, включение в новые стандарты C++ пары-тройки видов «умных» указателей никак не устраняет необходимость ручного управления памятью в C++.