Вопросы по теме 'smart-pointers'

Как включить в проект только коды умных указателей BOOST?
Как лучше всего включить в проект только библиотеку интеллектуальных указателей ускорения, не добавляя в проект все библиотеки ускорения? Мне нужна только библиотека интеллектуальных указателей boost в моем проекте, и я не хочу регистрировать /...
2846 просмотров
schedule 09.10.2021

Как заставить пользователей создавать объекты класса, производного от моего, только с помощью new?
Для реализации подсчета ссылок мы используем IUnknown - как интерфейс и класс шаблона умного указателя. В интерфейсе реализованы все методы подсчета ссылок, включая Release() : void IUnknownLike::Release() { if( --refCount == 0 ) {...
175 просмотров
schedule 26.09.2021

enable_shared_from_this - пустой внутренний слабый указатель?
Я использую enable_shared_from_this<Base> , а затем наследую от Base . При попытке использовать shared_from_this() в конструкторе Derived (не в списке инициализаторов) я получаю исключение. Оказывается, внутренний слабый указатель равен...
7956 просмотров
schedule 29.10.2021

использование std :: tr1 :: shared_ptr в качестве внутреннего механизма для подсчета ссылок
Насколько безопасно и правильно использовать std :: tr1 :: shared_ptr, как в примере кода ниже, для подсчета ссылок? (это всего лишь конкретный образец, класс может содержать что угодно (void *) вместо ФАЙЛА *) class File { public: File(const...
442 просмотров

Как вернуть интеллектуальные указатели (shared_ptr) по ссылке или по значению?
Допустим, у меня есть класс с методом, возвращающим shared_ptr . Каковы возможные преимущества и недостатки возврата по ссылке или по значению? Две возможные подсказки: Раннее уничтожение объекта. Если я возвращаю ссылку shared_ptr by...
86632 просмотров
schedule 25.09.2021

Перегрузки оператора присваивания std :: shared_ptr или std :: unique_ptr
Я не вижу причины, по которой у них нет перегрузки оператора присваивания для простых старых указателей того типа, для которого они созданы. Если цель сделать интерфейс интеллектуальных указателей как можно ближе к простым старым указателям, то...
2774 просмотров
schedule 28.10.2021

передача умного указателя на функцию, ссылающуюся на параметр указателя
Как передать smart ptr функции, использующей указатель в качестве параметра? smart_ptr<T> val; // I have this smart pointer // And I want to pass it to this function, so that this function will fill the smart pointer with proper value void...
1052 просмотров
schedule 11.10.2021

Есть ли ситуация, в которой я бы не стал использовать std :: make_shared?
Судя по проведенному мною исследованию, предпочтительным способом является std::make_shared строительства std::shared_ptr . В частности, потому что: Он выполняет только одно выделение памяти по сравнению с использованием new , которое...
458 просмотров

Безопасная ссылка в C ++ (указатель единственного владения с семантикой уведомления)
Мне нужно единоличное владение объектом, потому что мне нужно иметь возможность уничтожить его по требованию (иногда это имеет смысл; в этом случае объект представляет собой сеанс входа в систему, который из соображений безопасности пользователь хочет...
776 просмотров
schedule 12.10.2021

Преимущества использования BOOST shared_array по сравнению с shared_ptr
Я хочу использовать BOOST Smart pointer для управления памятью в моем приложении. Но я не уверен, какой умный указатель следует использовать для динамически выделяемого массива shared_ptr или shared_array . Согласно BOOST doc Начиная с...
6346 просмотров
schedule 13.11.2021

граф сцены, общие указатели и распространение констант
Я работаю над существующим большим проектом, который в основном: Использует граф сцены, где каждый узел имеет дочерние слоты Выполняет этап инициализации, на котором каждый узел рекурсивно инициализирует своих дочерних узлов и выполняет...
471 просмотров
schedule 05.11.2021

Умные указатели Delphi XE7
Я новичок в Delphi с опытом работы на C ++ и пытаюсь понять, как можно реализовать интеллектуальные указатели. Я наткнулся на следующий пост, который пытаюсь использовать в качестве отправной точки: Delphi - умные указатели и дженерики TList...
2596 просмотров
schedule 10.10.2021

Общие сведения об общих указателях c ++
Привет, я делаю свой собственный умный указатель с подсчетом ссылок, но прежде чем я начну, есть две концепции, которые я не совсем понимаю. Я понимаю, что когда создается общий указатель, указывающий на объект, я должен выделить память для...
330 просмотров
schedule 09.10.2021

Счетчик ссылок без блокировок и интеллектуальные указатели C ++
В общем, наиболее широко известные реализации классов smart ptr с подсчетом ссылок в C ++, включая стандартный std::shared_ptr , используют атомарный подсчет ссылок, но не предоставляют атомарный доступ к одному и тому же экземпляру smart ptr....
2971 просмотров
schedule 28.09.2021

Как shared_ptr увеличивает счетчик при передаче по значению?
У меня есть этот пример кода ниже. Я немного знаю о RVO (оптимизация возвращаемого значения) и о том, как конструктор копирования и оператор присваивания пропускаются во время оптимизации, а возвращаемое значение помещается непосредственно в память...
1328 просмотров
schedule 01.11.2021

Каков правильный интеллектуальный указатель, чтобы иметь несколько сильных ссылок и допускать изменяемость?
Я хочу иметь структуру в куче с двумя ссылками; один для меня, а другой - от закрытия. Обратите внимание, что код предназначен для однопоточного случая: use std::rc::Rc; #[derive(Debug)] struct Foo { val: u32, } impl Foo { fn...
591 просмотров
schedule 26.11.2021

Что делает метод _Get для std :: weak_ptr и когда его следует использовать?
Я читал об умных указателях, в частности о слабых указателях. Я понял, что у слабых указателей нет аналогичного get() метода, как у общих указателей, потому что неясно, указывает ли слабый указатель на что-нибудь. Затем я обнаружил, что...
254 просмотров
schedule 04.11.2021

Delphi - странное поведение с конструкторами умных указателей
Я работаю над проектом, содержащим несколько пакетов. В одном из моих базовых пакетов я объявляю такой умный указатель (вот полный код): unit UTWSmartPointer; interface type IWSmartPointer<T> = reference to function: T;...
198 просмотров

Требуется лучшее понимание интеллектуальных указателей с помощью Windows API
Мне сложно понять умные указатели (все еще на начальных этапах изучения tbh). Может быть, я слишком долго занимался проблемой, и мне не хватает простой концепции ... Я сейчас превращаю все свои «новые / удаляемые» в интеллектуальные указатели,...
781 просмотров
schedule 01.10.2021

unique_ptr / auto_ptr выглядит одинаково с пользовательским удалением для c ++ 98
auto_ptr не поддерживает настраиваемое средство удаления, и tr1 shared_ptr мне не подходит. Существуют ли какие-либо хорошие варианты до c11 для unique_ptr / auto_ptr , похожие на настраиваемый средство удаления?
246 просмотров
schedule 30.11.2021