Описание тега auto-ptr

Класс шаблона C++, который предоставляет ограниченную возможность сбора мусора для указателей, позволяя указателям автоматически уничтожать элементы, на которые они указывают, при уничтожении самого объекта auto_ptr. Не рекомендуется в C++11 в пользу unique_ptr.
5 ответов

Как правильно использовать auto_ptr для динамически размещаемых массивов?

Если я использую auto_ptr для хранения указателя на динамически распределенный массив, когда auto_ptr будет убит, он будет использовать обычную операцию удаления, а не delete[], таким образом, не удаляя мой выделенный массив. Как я могу (правильно) …
01 июн '10 в 00:33
1 ответ

Класс освобождается сразу после помещения в unique_ptr

Сейчас я работаю на сервере, используя Poco Net & Reactor Pattern. Я наблюдал, чтобы сделать класс CSConnection unique_ptr, потому что объекты класса ссылаются на пул рабочих потоков. Конструктор: CSConnection::CSConnection(StreamSocket& socket,…
09 ноя '13 в 18:28
1 ответ

Почему форма, указанная pb, уничтожается, когда в приведенном ниже примере выдается исключение?

Этот пример был взят из книги Страуступа, третье издание, раздел 14.4.2: void f (Point p1, Point p2, auto_ptr<Circle> pc, Shape* pb) { auto_ptr<Shape> p (new Rectangle(p1 ,p2)); auto_ptr<Shape> pbox(pb); p->rotate(45); / / ... i…
22 янв '12 в 11:43
2 ответа

Повторное получение "auto_ptr" и управление памятью

У меня такая ситуация: class MyClass { private: std::auto_ptr<MyOtherClass> obj; public: MyClass() { obj = auto_ptr<MyOtherClass>(new MyOtherClass()); } void reassignMyOtherClass() { // ... do funny stuff MyOtherClass new_other_class = n…
27 мар '09 в 16:02
1 ответ

tagpy: auto_ptr в питоне?

Я не профессионал, просто разочарован тем, что практически ни один аудиоплеер linux не поддерживает тег композитора id3v2, и я хотел бы выяснить, как его добавить. Taglib не поддерживает тег composer напрямую, но есть обходной путь, создавая тег с н…
08 янв '14 в 15:52
4 ответа

Ошибка std::auto_ptr

Для приведенного ниже кода C++ я получаю ошибку компилятора: class Mkt { int k; public: Mkt(int n): k(n) { throw; } ~Mkt() { cout<<"\n\nINSIDE Mkt DTOR function:\t"<<endl; } void func1() { cout<<"\n\nINSIDE FUNC1 function....value …
30 мар '11 в 09:00
1 ответ

В чем опасность передачи auto_ptr функции, ожидающей постоянной ссылки на auto_ptr?

Николай Йосуттис в своей книге "Стандартная библиотека C++ - учебное пособие и справочник" пишет на стр. 44 следующий абзац: Согласно концепции auto_ptrs, можно передать владение функцией, используя постоянную ссылку. Это очень опасно, потому что лю…
21 фев '12 в 16:57
2 ответа

Обычный указатель против автоматического указателя (std::auto_ptr)

Фрагмент кода (обычный указатель) int *pi = new int; int i = 90; pi = &i; int k = *pi + 10; cout<<k<<endl; delete pi; [Output: 100] Фрагмент кода (автоматический указатель) Случай 1: std::auto_ptr<int> pi(new int); int i = 90; …
23 апр '10 в 06:25
4 ответа

Это хороший вариант использования std::auto_ptr<>?

Пожалуйста, предположим, у меня есть функция, которая принимает указатель в качестве параметра. Эта функция может генерировать исключение, так как она использует std::vector&lt;&gt;::push_back() управлять жизненным циклом этого указателя. Если я объ…
22 ноя '09 в 03:33
1 ответ

Могу ли я передать auto_ptr по ссылке на функции?

В порядке ли следующая функция: void DoSomething(auto_ptr&lt; … &gt;&amp; a)....
21 мар '10 в 09:57
0 ответов

Инициализация функций как auto_ptr со ссылкой на класс

Я пытаюсь понять поток кода, и я наткнулся на этот фрагмент кода в заголовочном файле typedef std::auto_ptr&lt;Client&gt; auto_ptr_t; static Client::auto_ptr_t open(const std::string&amp; uri, const std::string&amp; user, const std::string&amp; pass…
20 ноя '17 в 07:46
5 ответов

Как проверить, является ли автоматический указатель нулевым?

Я новичок в авто указатель. У меня есть это: std::auto_ptr&lt;myClass&gt; myPointer(new MyClass(someArg)); Как я могу проверить, могу ли я создать экземпляр myPointer успешно? Я старался if (myPointer==NULL) и компилятор выдал ошибку: ни один операт…
15 авг '11 в 20:03
3 ответа

Какой тип (авто) указателя использовать?

Я натолкнулся на несколько вопросов, где ответы утверждают, что использование T* никогда не является лучшей идеей. Хотя я уже много использую RIIC, в моем коде есть одна особенность, где я использую T*. Читая о нескольких авто-указателях, я не смог …
20 июл '11 в 12:19
2 ответа

Почему unique_ptr можно использовать с контейнерами std, например с векторами <>?

Я понимаю, что auto_ptr нельзя использовать с векторами, поскольку auto_ptr не соответствует требованию быть копируемым конструктором. Поскольку копируемый auto_ptr изменяется, копирование не приводит к двум точным копиям, нарушая тем самым конструк…
24 фев '15 в 04:57
8 ответов

Это неправильно использовать auto_ptr с новым символом [n]

Если я объявляю временный автоматически удаленный символьный буфер, используя std::auto_ptr&lt;char&gt; buffer(new char[n]); тогда буфер автоматически удаляется, когда буфер выходит из области видимости. Я бы предположил, что буфер удаляется с помощ…
04 ноя '08 в 09:31
1 ответ

Почему в auto_ptr есть конструктор копирования шаблона и оператор переопределения?

Почему в auto_ptr есть конструктор копирования шаблона и оператор переопределения? Стандарт ISO для C++ определяет следующий интерфейс для auto_ptr. (Это скопировано прямо из стандарта 2003 года.) namespace std { template &lt;class Y&gt; struct auto…
13 июн '16 в 05:36
5 ответов

C++ Использует ли ссылки auto_ptr как переменные вне идиоматических?

Предположим, я хочу написать фабричный метод, который должен распределять гетерогенные объекты в куче и возвращать их вызывающей стороне. Я думаю о разработке API следующим образом: bool MakeEm(auto_ptr&lt;Foo&gt;&amp; outFoo, auto_ptr&lt;Bar&gt;&am…
15 июл '11 в 18:01
3 ответа

Qt и auto_ptr

Я только что открыл для себя концепцию auto_ptr и мне это нравится! Поскольку Qt часто требует QList или QVector<(некоторый QObject или QWidget) *>, есть ли конкретная причина, по которой следует избегать auto_ptr. Если я прав, это позволяет заменит…
21 май '10 в 17:31
2 ответа

Как установить auto_ptr в NULL

Есть ли способ установить auto_ptr в NULL или эквивалент? Например, я создаю двоичное дерево, состоящее из узловых объектов: struct Node { int weight; char litteral; auto_ptr&lt;Node&gt; childL; auto_ptr&lt;Node&gt; childR; void set_node(int w, char…
15 авг '12 в 18:16
4 ответа

Есть ли причина использовать auto_ptr?

Прочитав объяснение Джосутиса об auto_ptr из его книги по STL, у меня сложилось впечатление, что, если бы я попытался использовать его в любом случае, я бы на 100% потерпел неудачу из-за одной из многих ловушек auto_ptr. Мой вопрос: есть ли реальные…
29 дек '10 в 12:40