170 похожих чатов

И чём RAII? В том, что сам unique_ptr в этом

случае авто?

25 ответов

24 просмотра

ну да

Да, в том, что unique_ptr управляет динамическим ресурсом память

Blue Talpa- Автор вопроса
Anatoly Shirokov
Да, в том, что unique_ptr управляет динамическим р...

Так, а вот объект MyClass же владеет каким-то там ресурсом res (пусть это файлом будет), и он же в динамической памяти. Или это уже не RAII?

Blue Talpa
Так, а вот объект MyClass же владеет каким-то там ...

Тоже raii, но выделенный в хипе myclass под управлением unique_ptr

Blue Talpa- Автор вопроса
Anatoly Shirokov
Тоже raii, но выделенный в хипе myclass под управл...

Но... Тогда почему они динамическими-то быть не должны? я этого понять не могу.

Blue Talpa
Но... Тогда почему они динамическими-то быть не до...

Речь о голых указателях, которые не поместили под управление скопгарда, в этом случае нет объекта, который вернет системе этот ресурс при выходе из скопа или при выбросе исключения

Blue Talpa
Так, а вот объект MyClass же владеет каким-то там ...

Ну должна быть выстроена цепочка владения, причём незамкнутая, объектов по RAII владеющими друг другом, в конце которой должен находится объект в автоматической памяти (переменная класса памяти auto)

Blue Talpa
Но... Тогда почему они динамическими-то быть не до...

Ты вообще сознаёшь, что в объектной модели С++ объекты одного и того же класса могут размещаться в памяти любого класса, глобальной, авто, динамической? Класс не может этим управлять, он не знает, где создадут его объект. Поэтому класс-протектор по RAII только строит механизм защиты, а уж применять его должен клиент этого класса, кто пишет код.

Blue Talpa- Автор вопроса
Anatoly Shirokov
Речь о голых указателях, которые не поместили под ...

Правило: Используйте идиому программирования RAII и не выделяйте объекты вашего класса динамически. Но же, блин, ровно динамически и выделяю в рамках RAII с юник-птром... Ладно, я тупой. я вряд ли пойму это правило.

Blue Talpa
Правило: Используйте идиому программирования RAII ...

auto ptr = std::make_unique<MyClass>(res); Где тут динамическое выделение ?

Blue Talpa- Автор вопроса
Blue Talpa- Автор вопроса
Anatoly Shirokov
Да ну тебя

Блин, ну сорян. Кто-то сразу въезжает, а кто-то я.

Blue Talpa
Конечно.

Ну, ок. соответственно, пользователь должен выстроить эту выше описанную мной цепочку владения по RAII с корнем в каком-то объекте в автоматической или глобальной памяти.

Blue Talpa
Внутри make_unique

Так кого еэто ебёт?

Blue Talpa- Автор вопроса
Blue Talpa
Внутри make_unique

В том и дело, что оно ГАРАНТИРОВАНО выделяет ресурс и тут же УПАКОВЫВАЕТ его в обёрточку, чтобы не сломать, и ГАРАНТИРОВАНО, ВСЕГДА удалить.

Blue Talpa- Автор вопроса
Ilya Zviagin
В том и дело, что оно ГАРАНТИРОВАНО выделяет ресур...

Но память же динамическая.. Блин, мне кажется, вы мне уже треснуть хотите, если честно

Ilya Zviagin
В том и дело, что оно ГАРАНТИРОВАНО выделяет ресур...

Разве выделение прям гарантировано? А если бед алокейт выбросит.

Blue Talpa- Автор вопроса
Anatoly Shirokov
resource acquisition is initialization

Да, я помню, мы как раз об этом говорим.

我が名はレギオン
Разве выделение прям гарантировано? А если бед ало...

Именно, а если выбросит, то всё, что выделилось, освободится, а что не выделилось - нет.

Blue Talpa
Внутри make_unique

Это деталь реализации, которая тебе не должна быть интересна в рамках вопроса. В этом смысл абстракций/инкапсуляции/интерфейсов Я попробую в очень кривую аналогию, так что не ругайтесь: asm-инструкции обычно не принято встраивать в C++-код, что вовсе не значит, что результат компиляции программы не должен превратиться в бинарный исполняемый файл, представимый как asm. Так вот, make_unique – такая же абстракция над динамическим выделением памяти, как и C++ над asm Рассуждая о конкретном слое абстракции, не стоит лезть на другие её уровни

Похожие вопросы

Обсуждают сегодня

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Мужики. привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных элементов...
Kraszx
2
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Всем привет! Кто пользуется DevExpress, подскажите пожалуйста, реализован ли в TcxGrid в новых версиях поиск по датам как в Экселе (ну т.е. не просто список чекбоксов со значе...
A Z
4
Карта сайта