Вопросы с тегом «smart-pointer»

67
Зачем собирать мусор, если есть умные указатели

В наши дни так много языков собирают мусор. Это даже доступно для C ++ третьими лицами. Но в C ++ есть RAII и умные указатели. Так какой смысл использовать сборщик мусора? Это делает что-то дополнительное? И в других языках, таких как C #, если все ссылки обрабатываются как интеллектуальные...

60
std :: shared_ptr в крайнем случае?

Я просто смотрел трансляции "Going Native 2012" и заметил обсуждение std::shared_ptr. Я был немного удивлен, услышав несколько отрицательный взгляд Бьярне на std::shared_ptrего комментарий о том, что его следует использовать в качестве «последнего средства», когда время жизни объекта не определено...

33
raw, weak_ptr, unique_ptr, shared_ptr и т. д. Как правильно их выбрать?

В C ++ есть много указателей, но, если честно, через 5 лет или около того в программировании на C ++ (особенно с Qt Framework) я использую только старый необработанный указатель: SomeKindOfObject *someKindOfObject = new SomeKindOfObject(); Я знаю, что есть много других «умных» указателей: // shared...

29
Почему Java / C # не может реализовать RAII?

Вопрос: Почему Java / C # не может реализовать RAII? Пояснение: я знаю, что сборщик мусора не является детерминированным. Таким образом, при использовании текущих возможностей языка метод Dispose () объекта не может быть вызван автоматически при выходе из области видимости. Но можно ли добавить...

16
C ++: должен ли класс владеть или соблюдать свои зависимости?

Скажем, у меня есть класс, Foobarкоторый использует (зависит от) класса Widget. В Widgetстарые добрые времена wolud объявлялся как поле в Foobarили, может быть, как умный указатель, если требовалось полиморфное поведение, и он был бы инициализирован в конструкторе: class Foobar { Widget widget;...

12
Будет ли разрушение большого списка переполнять мой стек?

Рассмотрим следующую реализацию односвязного списка: struct node { std::unique_ptr<node> next; ComplicatedDestructorClass data; } Теперь предположим, что я перестал использовать некоторый std::unique_ptr<node> headэкземпляр, который затем выходит из области видимости, вызывая вызов его...

9
Является ли недетерминированное управление ресурсами утечкой?

Из того, что я вижу, есть две распространенные формы управления ресурсами: детерминированное уничтожение и явное. Примерами первых могут быть деструкторы и интеллектуальные указатели C ++ или подпрограмма DESTROY в Perl, а вторым примером может служить парадигма Ruby «блоки для управления...

9
Разработка хранилища Key / Value с портированием на современный C ++

Я разрабатываю сервер базы данных, похожий на Cassandra. Разработка была начата в C, но все стало очень сложно без классов. В настоящее время я перенес все на C ++ 11, но я все еще изучаю "современный" C ++ и у меня есть сомнения по поводу многих вещей. База данных будет работать с парами ключ /...