Описание тега smart-pointers
Абстрактный тип данных, который имитирует указатель, обеспечивая при этом дополнительные функции, такие как автоматическая сборка мусора или проверка границ.
2
ответа
Затмение полиморфизм с использованием ошибки C++11 shared_ptr
Учитывая следующий пример кода: #include <iostream> #include <memory> using namespace std; struct A { public: A(int aa) : a(aa) {} int a; virtual ~A() {} }; struct B : A { public: B(int aa, int bb) : A(aa), b(bb) {} int b; }; void f(shar…
16 дек '12 в 20:42
1
ответ
Связанный список C++ не будет работать так, как я ожидал (Smart Pointers)
#include <iostream> #include <memory> using namespace std; class Node { //Private variables. private: std::unique_ptr<Node> next; //Next node. std::unique_ptr<Node> prev; //Previous node. //Int value. int value; //Public vari…
14 июл '16 в 21:19
4
ответа
Чтение-запись потокобезопасного интеллектуального указателя в C++, x86-64
Я разрабатываю некоторую структуру данных без блокировки, и возникает следующая проблема. У меня есть поток писателя, который создает объекты в куче и оборачивает их в смарт-указатель со счетчиком ссылок. У меня также есть много читательских тем, ко…
04 ноя '11 в 09:30
3
ответа
Умные указатели с "этим" в C++
Я работал над заменой необработанных указателей указателями с подсчетом ссылок, которые предоставляют только константную версию базового. Моя цель - уменьшить использование памяти (и время, затрачиваемое на ненужное создание и разрушение сложных объ…
26 фев '09 в 22:23
3
ответа
Менее подробные альтернативы умному указателю
Мы все знаем и любим умные указатели за их безопасность и скорость, но необходимость вызывать такие функции раздражает меня: void TreeNode::addChild(unique_ptr<TreeNode> newChild){ children_.push_back(std::move(newChild)); } //This has to be c…
25 апр '14 в 11:23
4
ответа
Безопасная ссылка в C++ (указатель единого владельца с семантикой уведомления)
Мне нужно единоличное владение объектом, потому что я должен иметь возможность уничтожить его по требованию (иногда это имеет смысл; в этом случае объект представляет собой зарегистрированный сеанс, который по соображениям безопасности пользователь …
04 дек '13 в 11:21
1
ответ
Как я могу исправить следующую ошибку "нет совпадения для вызова '(std:: tr1:: shared_ptr<_iobuf *>) (FILE * &)'"
Учитывая следующий код: #include <cstdio> #include <tr1/memory> // "tr1" is in order to fix it at Eclipse! using std::tr1::shared_ptr; class CannotOpenFileException: public std::exception { }; class FileOutput { shared_ptr<FILE*> f…
27 июн '18 в 09:51
0
ответов
Хорошо зарекомендовавший себя класс интеллектуальных держателей ресурсов для C++ 14 или более поздней версии
В качестве продолжения этого вопроса я ищу класс интеллектуальных держателей ресурсов, совместимый с std::move, Примерно так, как показано ниже, что позволит одним строкам создавать и хранить системные ресурсы с помощью C++ lambdas: template<type…
11 сен '18 в 22:50
5
ответов
Приведение между двумя шаблонно-шаблонными классами с использованием общих указателей
У меня есть класс из библиотеки, например так: template <typename T> class TypedClass { public: typedef typename boost::shared_ptr<TypedClass<T> > Ptr; T m_data; T* m_pointer_data; }; Предполагая, что я согласен с тем, что int и fl…
31 авг '13 в 14:33
1
ответ
Что не так, чтобы сбросить std::unique_ptr в указатель на массив?
Я вижу фрагмент кода, как показано ниже: std::unique_ptr<uint8_t> mCache; mCache.reset(new uint8_t[size]); Кто-то сказал мне, что есть некоторые проблемы с этим кодом. Кто-нибудь может дать мне некоторые детали?
15 авг '18 в 08:20
3
ответа
shared_ptr магия:)
Мистер Лидстрём и я поссорились:) Г-н Лидстрём утверждает, что конструкция shared_ptr<Base> p(new Derived); не требует, чтобы у Base был виртуальный деструктор: Армен Цирунян: "Действительно? Будет ли корректно очищен shared_ptr? Не могли бы …
10 окт '10 в 09:41
5
ответов
Указатель на вопрос Указатель
У меня есть класс с (не умным) указателем на объект интерфейса (давайте назовем его pInterface), и я строю вложенный класс, который также нуждается в доступе к этому интерфейсу. Я собираюсь обойти это, передав указатель на интерфейс в конструктор вл…
04 мар '09 в 17:52
0
ответов
Проблема Eclipse (ADT) со смарт-указателями C++
Я использую "Инструменты разработчика Android - Сборка: v22.0.5-757759" Когда я пытаюсь использовать "умные указатели", например, std::unique_ptr<>, редакторы Eclipse не распознают это как допустимый класс. Я получаю ошибку "Символ unique_ptr не мож…
12 ноя '13 в 17:48
2
ответа
Как работает счетчик декремента умного указателя?
Ниже приведен пример кода для общего указателя. Я определяю общий указатель внутри области фигурных скобок. sp1 инициализируется новым A (счетчик = 1), а sp1 назначается sp2 (копирование и / или назначение увеличивают счетчик на 1, поэтому counter =…
03 июл '16 в 06:27
1
ответ
Boost shared_ptr: как использовать пользовательские удалители и распределители
Свободная функция allocate_shared может использоваться с любым стандартным совместимым распределителем. Но как насчет конструктора shared_ptr и метода сброса. template<class Y, class D, class A> shared_ptr(Y * p, D d, A a); template<class Y…
31 июл '10 в 14:55
1
ответ
Передать вектор unique_ptr в функцию, константную ссылку
Я обычно передаю вектор, содержащий необработанные указатели, например: someFunc(const std::vector<MyClass*>& classList){..} Интересно, можете ли вы сделать то же самое с unique_ptr следующим образом: someFunc(const std::vector<std::uni…
12 дек '15 в 03:49
3
ответа
Вызов функций класса из конструктора или использование умных указателей?
У меня есть класс, который обрабатывает многие из огромного процесса поиска (запуск, остановка, и т. Д.). class CSearch { public: CSearch(); ~CSearch(); bool Start(); bool Stop(); }; Я немного смущен для звонка Start функция от этого пути: CSearch s…
05 окт '17 в 12:16
4
ответа
Почему реализации интеллектуальных указателей C++ хранят счетчик ссылок в куче вместе с pointee?
Читая Alexandrescu и wikipipidia, я вижу, что pointee и счетчик ссылок хранятся в куче. Тогда есть упоминание, что подсчет ссылок неэффективен, так как счетчик должен быть размещен в куче? Почему он не хранится в стеке?
14 фев '12 в 19:46
0
ответов
Интеллектуальный указатель C++ влияет на проблему утечки памяти
Я написал одну простую программу на C++ для проверки умного указателя, но обнаружил, что умный указатель влияет на проблему утечки памяти. Пожалуйста, смотрите ниже код для этого: test.cpp: (протестировал его в CLANG 7.0 или gcc 7.3.0) #include <…
05 мар '18 в 07:24
2
ответа
Различное поведение при передаче shared_ptr в weak_ptr в функциях потока и обычных функциях
У меня есть функция потока, которая принимает слабый_птр<>, и я передаю свой shared_ptr<> в функцию потока. С юридической точки зрения слабый_птр<> не должен увеличивать счетчик ссылок в shared_ptr<>, однако, если я не приведу тип с помощью слабого_…
29 мар '18 в 15:15