шКодер самоучка
|
|||||||||||
1 | |||||||||||
Использование enable_shared_from_this совместно с custom deleter14.09.2023, 23:16. Показов 1465. Ответов 3
Доброго времени суток.
У std::sharde_ptr есть возможность указать пользовательский deleter .Так же есть std::enable_shared_from_this .Возникли вопросы:
Предполагаемое использование:
shared_ptr из dll и и при этом для создания/удаления использовался аллокатор из этой же dll
0
|
14.09.2023, 23:16 | |
Ответы с готовыми решениями:
3
Custom deleter умного указателя Использование if совместно с case Использование DDR3 совместно с DDR3L Использование TOP и GROUP BY совместно Использование нескольких языков совместно с C# |
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
|
|
15.09.2023, 00:27 | 2 |
Max Dark, безотносительно вопроса, сама по себе идея возвращать shared_ptr из dll крайне спорная. Хотя бы потому, что проблема, которую вы решаете с помощью custom deleter`а, никуда не денется, а просто перейдет на уровень самого shared_ptr - аллокация счетчика будет подвержена ей. К тому же layout shared_ptr скорее всего не будет переносим между разными компиляторами.
Поэтому совет: для стабильной работы в DLL, ничего лучше COM-like класса с внутренним счетчиком ссылок и inline обертки a-la intrusive_ptr не придумано.
2
|
шКодер самоучка
|
|
15.09.2023, 00:59 [ТС] | 3 |
DrOffset, предполагается, что будет использоваться один и тот же компилятор для всех модулей.
Основная причина наличия таких модулей - загрузка по необходимости. Добавлено через 7 минут DrOffset, аллокация control block как я понимаю так же будет происходить на стороне DLL, так как A::ptr A::create() { return {new B, &A::destroy}; } будет внутри библиотеки.
0
|
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
|
||||||
15.09.2023, 09:57 | 4 | |||||
А деаллокация? Реализация может конечно ее предусматривать в правильном месте, но гарантий никаких нет.
Так что я бы на вашем месте отказался от share_ptr для использования с объектами в dll. Заодно и вопрос ваш про enable_form_this решится сам собой, для интрузивных счетчиков нет этой проблемы. Весь контроль за местом освобождения объекта будет полностью в ваших руках. Добавлено через 27 минут Max Dark, Кликните здесь для просмотра всего текста
2
|
15.09.2023, 09:57 | |
15.09.2023, 09:57 | |
Помогаю со студенческими работами здесь
4
Использование Entity Framework совместно с SQLite Использование VB или VB .NET совместно с IIS Использование Java-кода совместно с Joomla, например Использование совместно паттернов Builder и Abstract Factory Использование onClick совместно с оператором if, android studio Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Проектирование и моделирование
hw_wired 28.01.2025
Введение в моделирование
Моделирование представляет собой один из фундаментальных методов научного познания, который позволяет изучать объекты и явления через создание их упрощенных аналогов. В. . .
|
Алгоритмы и исполнители
hw_wired 28.01.2025
Введение в алгоритмы
В современном мире информационных технологий алгоритмы играют основополагающую роль в решении различных задач и автоматизации процессов. Алгоритм представляет собой точную. . .
|
Хранение информации
hw_wired 28.01.2025
Введение: Роль систем хранения информации в современном мире
В современную эпоху цифровых технологий эффективное хранение информации становится одним из ключевых факторов успешного развития любой. . .
|
Обработка числовой информации
hw_wired 28.01.2025
Введение в обработку числовой информации
В современном мире обработка числовой информации стала неотъемлемой частью как профессиональной деятельности, так и повседневной жизни. Электронные таблицы. . .
|
Мультимедиа
hw_wired 28.01.2025
Введение в мультимедийные технологии
В современном мире мультимедийные технологии стали неотъемлемой частью нашей жизни, проникнув во все сферы человеческой деятельности. Термин "мультимедиа". . .
|
Обработка текстовой информации
hw_wired 28.01.2025
Введение в обработку текстовой информации
В современном мире обработка текстовой информации играет фундаментальную роль в различных сферах человеческой деятельности. Текстовые редакторы стали. . .
|
Обработка графической информации
hw_wired 28.01.2025
Введение в компьютерную графику
Компьютерная графика стала неотъемлемой частью современного цифрового мира, пройдя впечатляющий путь развития от простейших черно-белых изображений до сложных. . .
|
Python в Алгоритмике: Решение задач
hw_wired 28.01.2025
Введение в Python и Алгоритмику
В современном мире программирование стало неотъемлемой частью образования и профессионального развития. Python зарекомендовал себя как один из самых популярных и. . .
|
Компьютер как универсальное устройство для работы с информацией
hw_wired 28.01.2025
Введение в устройство компьютера
Компьютер представляет собой универсальное электронное устройство, предназначенное для автоматической обработки информации. В современном мире компьютер стал. . .
|
Информация и информационные процессы
hw_wired 28.01.2025
Понятие информации и ее виды
В современном мире информация является одним из фундаментальных понятий, пронизывающих все сферы человеческой деятельности. Под информацией понимают любые сведения об. . .
|
Алгоритмика
hw_wired 28.01.2025
Введение: Основы алгоритмики и её роль в информатике
В современном мире программирование и алгоритмическое мышление стали неотъемлемой частью образования и профессиональной деятельности. . . .
|
Информационное моделирование
hw_wired 28.01.2025
Введение в информационное моделирование
В современном мире информационное моделирование стало неотъемлемой частью научной, образовательной и профессиональной деятельности. Это мощный инструмент. . .
|