LINUX.ORG.RU

История изменений

Исправление nanoolinux, (текущая версия) :

Делать обычный указатель на смарт-пойнтер - мягко говоря потерять все его преимущества.

Ну я то же самое имел ввиду.

А в том, что случится с выделенной памятью в конструкторе при появлении исключения.

С какой имено памятью, уточни? Та, что для полей класса? Или ты инициализируешь какой-то указатель (член класса) оператором new?

В первом случае - ничего, её удалят.

Во втором - всё зависит от того, привязываешь ли ты выделенную память к unique_ptr например. Если криворукий - то нет, получишь течь. Если сделать по нормальному - то да, т.к. все автоматические объекти (и тот же проинициированый твоей памятью unique_ptr) будут удалены.

Короче, я надеюсь ты в курсе, что такое exception safety в констукторе или нет? Если да - не парь мне мозг, если нет - иди читай книжки по спп.

Исходная версия nanoolinux, :

Делать обычный указатель на смарт-пойнтер - мягко говоря потерять все его преимущества.

Ну я то же самое имел ввиду.

А в том, что случится с выделенной памятью в конструкторе при появлении исключения.

С какой имено памятью, уточни? Та, что для полей класса? Или ты инициализируешь какой-то указатель (член класса) оператором new?

В первом случае - ничего, её удалят.

Во втором - всё зависит от того, привязываешь ли ты выделенную память к unique_ptr например. Если криворукий - то нет, получишь течь. Если сделать по нормальному - то нет, т.к. все автоматические объекти (и тот же проинициированый твоей памятью unique_ptr) будут удалены.

Короче, я надеюсь ты в курсе, что такое exception safety в констукторе или нет? Если да - не парь мне мозг, если нет - иди читай книжки по спп.