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

Что такое умный указатель и когда его использовать?
Что такое умный указатель и когда его использовать?
629606 просмотров
schedule 25.05.2022

Указатели и контейнеры
Все мы знаем, что указатели RAW должны быть обернуты в некую форму интеллектуального указателя, чтобы обеспечить безопасное управление памятью при исключениях. Но когда дело доходит до контейнеров указателей, проблема становится еще более острой....
2852 просмотров
schedule 28.12.2021

Замена auto_ptr в VC++ 8
std::auto_ptr не работает в VC++ 8 (это то, что мы используем на работе). Моя главная претензия к этому заключается в том, что он позволяет auto_ptr<T> x = new T(); , что, конечно, приводит к ужасным сбоям, хотя его легко сделать по ошибке....
2097 просмотров
schedule 27.03.2024

Как работает подсчет ссылок интеллектуального указателя с подсчетом ссылок?
Другими словами, как реализация отслеживает количество? Поддерживается ли объект, похожий на карту, доступный для всех экземпляров shared_ptr , ключом которых является адрес указателя, а значением является количество ссылок? Если мне нужно...
25555 просмотров

Как избежать утечки памяти с shared_ptr?
Рассмотрим следующий код. using boost::shared_ptr; struct B; struct A{ ~A() { std::cout << "~A" << std::endl; } shared_ptr<B> b; }; struct B { ~B() { std::cout << "~B" << std::endl; }...
19545 просмотров

Умный указатель С++ для необъектного типа?
Я пытаюсь использовать умные указатели, такие как auto_ptr, shared_ptr. Однако я не знаю, как его использовать в этой ситуации. CvMemStorage *storage = cvCreateMemStorage(); ... use the pointer ... cvReleaseMemStorage(&storage); Я не...
464 просмотров
schedule 27.09.2022

Когда уместно использовать интеллектуальные указатели C++ в графических интерфейсах (программы с основными циклами)
Я склоняюсь к использованию std::tr1::shared_ptr для автоматического управления указателем на служебный класс в моей программе с графическим интерфейсом. В основном вот скелет программы: int main () { Allocate dynamic memory for utility...
202 просмотров

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,...
5287 просмотров
schedule 16.07.2022

Каковы правила преобразования между различными интеллектуальными указателями в C ++
TR1 представил shared_ptr, weak_ptr, scoped_ptr и unique_ptr и др. Я хотел бы знать различные правила преобразования / продвижения типов между этими типами. Например, что происходит, когда scoped_ptr назначается shared_ptr? Возможно ли такое...
6539 просмотров
schedule 08.03.2022

Некоторые вопросы об использовании CComPtr (при использовании Release ()? Могу ли я вернуть CComPtr ?,)
Я пишу надстройку для Internet Explorer (BHO) и использую интеллектуальные указатели CComPtr. Я думаю: Когда мне следует использовать функцию CComPtr.Release ()? In this this link it's used to release browser object. Where else should I...
13583 просмотров
schedule 09.07.2022

Явное ключевое слово в MS Visual Studio 4.1
Я реализую класс интеллектуального указателя с использованием дженериков, и я хотел заставить пользователей этого класса правильно создавать интеллектуальный указатель с использованием такого синтаксиса, как MyReference<TestCls>(mytest3))...
148 просмотров
schedule 30.07.2022

Распространение константности на данные, на которые указывают переменные-члены
Новичков в C++ часто сбивает с толку тот факт, что константные функции-члены могут вызывать неконстантные методы для объектов, на которые ссылается класс (либо по указателю, либо по ссылке). Например, совершенно верно следующее: class SomeClass...
2893 просмотров
schedule 16.08.2023

Удаление указателя на неполный тип и умные указатели
При попытке использовать auto_ptr с типом, который был объявлен с предварительным объявлением, например так: class A; ... std::auto_ptr<A> a; деструктор A не вызывается (очевидно, потому что auto_ptr внутренне delete s не может...
6515 просмотров

Вопрос по enable_shared_from_this
Возможный дубликат: что полезность enable_shared_from_this Я хочу иметь представление о том, что такое общие указатели. Итак, я погуглил и получил некоторое представление о них. И я наткнулся на веб-сайт, на котором был представлен...
869 просмотров
schedule 24.03.2022

Смысл использования std::auto_ptr
В чем смысл auto_ptr ? Посмотрите на этот код: #include <iostream> #include <memory> class A { public: ~A() { std::cout << "DEST"; }; }; void func(A* pa) { std::cout << "A pointer"; } void...
4601 просмотров
schedule 02.09.2022

Композиция и круговая зависимость
Канал содержит элементы типа E. Канал также имеет порт , который дает доступ к элементам в канале. Это должно выглядеть примерно так: template< typename E> class IOutPort{ public: ... /** * Takes an...
362 просмотров

Создайте boost::shared_ptr для существующей переменной
У меня есть существующая переменная, например. int a = 3; Как мне теперь создать от boost::shared_ptr до a ? Например: boost::shared_ptr< int > a_ptr = &a; // this doesn't work
44137 просмотров
schedule 27.09.2023

Обработка умных указателей в контейнере stl
У меня есть класс Foo<T> , который имеет вектор интеллектуальных указателей на производные классы Shape . Я пытаюсь реализовать функцию-член at(index) . Вот что я хотел бы сделать интуитивно: Foo<float> myfoo;...
2988 просмотров
schedule 29.04.2022

Ссылки между двумя интеллектуальными указателями
Читая этот stackoverflow ответ : QWeakPointer — чувствуете ли вы повторяющийся паттерн? Так же, как std::weak_ptr и boost::weak_ptr, это используется в сочетании с QSharedPointer, когда вам нужны ссылки между двумя интеллектуальными...
91 просмотров
schedule 26.05.2024

Код рефакторинга для использования общих указателей Boost
Я написал проект, используя обычные указатели, и теперь мне надоело ручное управление памятью. Какие проблемы можно ожидать во время рефакторинга? До сих пор я уже потратил час, заменяя X* на shared_ptr<X> для типов, которые я хочу...
544 просмотров