|
2 / 1 / 1
Регистрация: 15.09.2025
Сообщений: 49
|
|
Решить задачу "висячих" указателей15.09.2025, 20:11. Показов 6022. Ответов 98
Метки указатель на объект (Все метки)
Добрый день.
Задача: На объект может ссылаться несколько указателей. Когда объект удаляется, то указатели не должны превратиться в "висячие". Их надо либо сразу обнулить, либо обнулять при первом обращении, или любой другой способ, чтоб избежать ошибки. Как это можно реализовать? ... хотя бы общие идеи? Спасибо.
0
|
|
| 15.09.2025, 20:11 | |
|
Ответы с готовыми решениями:
98
нужно решить задачу в ассемблере с комментами , срочно! Помогите решить задачу алгоритм есть Помогите решить задачу пожалуйста!!! |
|
110 / 74 / 6
Регистрация: 08.08.2025
Сообщений: 716
|
|
| 16.09.2025, 19:20 | |
|
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||||||
| 16.09.2025, 19:39 | |||||||
|
Передать указатель и гарантировать что объект по этому указателю существует(или нет) может лишь программист. В рамках своего кода. ТЗ как такового нет. Ничего мы(и вот правильное использование местоимения) тут не обсуждаем. Добавлено через 4 минуты Тепер вернемся к нашим баранам. Если использовать для владельца std::shared_ptr, который уже имеет функционал. То можно передавать std::weak_ptr на владельца и это он уже будет гарантировать и давать возможность определить, существует ли исходный объект. Это разумный компромисс. Добавлено через 13 минут
Это очевидно всем. Во втором случае мы имеем возможность это определить, существует ли объект. При этом с минимальными накладными расходами и без каких либо дополнительных приспособлений и телодвижений. Теперь давай очередную "закидуху" из карманов, ТЗ то все равно нет, можно на ходу придумывать всё)
0
|
|||||||
|
352 / 150 / 10
Регистрация: 19.07.2024
Сообщений: 854
|
||
| 16.09.2025, 20:52 | ||
Раз с таким апломбом утверждаете то, в чём не разбираетесь.В Python объекты(ресурсы) очищает - сам Python. Потому и сразу рекомендовал его вам. PS: Но есть и другие языки, имеющие встроенные "сборщики мусора". Поинтересуйтесь у гугла. Это вам на домашнее изучение.
0
|
||
|
Модератор
|
|||
| 16.09.2025, 21:20 | |||
|
Добавлено через 1 минуту
0
|
|||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 16.09.2025, 21:31 | ||
|
0
|
||
|
Модератор
|
|
| 16.09.2025, 21:50 | |
|
SmallEvil, Я в этом плане плохо знаком. Они похожи на умные указатели в С++.
В языке только ссылки, они не могут быть нулевыми (nil), для этого в языке есть опционалы. Ну там во первых все типы делятся на reference и value, те что value хранятся на стеке и всегда копируются (хотя можно параметр задать как inout и менять его копию), а другие в куче и передается только ссылка. Ссылки только у классов и замыканий (структуры это value тип), вот у них есть несколько видов ссылок, по умолчанию они все сильные (strong), есть еще слабые (weak) и бесхозные (unowned). Слабые всегда опционалы и требуют проверки на наличие значения и извлечения значения, а бесхозные неявные опционалы (автоматическое извлечение значения, можно нарваться на не валидную ссылку). А так если есть хотя бы одна сильная ссылка то объект будет висеть, слабые и бесхозные ссылки не учитываются при удалении.
0
|
|
|
2 / 1 / 1
Регистрация: 15.09.2025
Сообщений: 49
|
|||
| 17.09.2025, 06:32 [ТС] | |||
|
извиняюсь, но хотелось бы общаться ближе к теме, т.к. офтопика тут уже 4 страницы... Хотя, вижу от вас грамотные коменты, как исключение, отвечу: Про доказательства(скорости указателей над смартами) - см. в любой официальной документации всегда упоминается, что смарты(из-за медлительности и ресурсоемкости) можно использовать ТОЛЬКО в случае необходимости(контролировать время жизни объекта), во всех остальных случаях, просто менять указатели на смарты - это расточительство. ----------- Кстати(было тут #16), ТС может исправить заголовок темы? заменить бы слово "проблему" на "задачу", это возможно причина офтопика... кто-нибудь еще согласен с этим утверждением?
0
|
|||
|
Модератор
|
||||||||||||||||||||||||||||
| 17.09.2025, 12:04 | ||||||||||||||||||||||||||||
|
Я тут придумал интересный пример. Возьмем за основу чистый Си, компилятор Clang и библиотеку Blocks. Напишем вот такой код
Попробуем переписать это максимально точно на С++
Единственное решение приходит только использовать сырые указатели
В голову приходит только решение с использованием умных указателей. Хотя с их помощью не получается решить, не хватает знаний языка.
0
|
||||||||||||||||||||||||||||
|
2 / 1 / 1
Регистрация: 15.09.2025
Сообщений: 49
|
|||
| 17.09.2025, 12:21 [ТС] | |||
|
0
|
|||
|
Модератор
|
|||||||||
| 17.09.2025, 12:27 | |||||||||
Прошу ткнуть носом, где написано про их медлительность https://learn.microsoft.com/en... w=msvc-170
1
|
|||||||||
|
2 / 1 / 1
Регистрация: 15.09.2025
Сообщений: 49
|
||
| 17.09.2025, 12:36 [ТС] | ||
|
Согласны? --------- Ура .... Raw pointers ... теперь вижу, откуда "сырые". Спасибо за ссылку (learn.microsoft.com) - а вы спрашивали "что такое официальные доки"? Но, ведь, microsoft - это ни капли НЕ стандарт. Согласны?
0
|
||
|
895 / 546 / 232
Регистрация: 21.02.2011
Сообщений: 5,731
|
|||||||
| 17.09.2025, 12:54 | |||||||
0
|
|||||||
|
2 / 1 / 1
Регистрация: 15.09.2025
Сообщений: 49
|
||
| 17.09.2025, 12:55 [ТС] | ||
|
Спасибо ![]() --------------- Кстати, а на этом cppreference.com есть какой-нибудь "About Us" ? Не могу найти их причастность к "Комитету"
0
|
||
|
2 / 1 / 1
Регистрация: 15.09.2025
Сообщений: 49
|
||
| 17.09.2025, 13:13 [ТС] | ||
|
Оказывается, "комитет" знает про cppreference, но не признает их. alecss131, последняя просьба, как бесплатно скачать стандарт C++ с сайта isocpp.org ? Они с меня деньги просят.
0
|
||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
|
| 17.09.2025, 14:16 | |
|
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||
| 17.09.2025, 14:37 | |||
|
Например: Document Number: N4950 (с++23) C++ Standards Committee Papers
1
|
|||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
|
| 17.09.2025, 14:54 | |
|
0
|
|
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
||
| 17.09.2025, 15:11 | ||
|
Работать с объектами и указателями на них через "фабрику". В ней запоминать выданные указатели и обнулять их при удалении объекта. Вариант 2. Хранить множество живых объектов (адресов). Перед использованием указателя проверять, что адрес содержится в множестве. Вариант 3. К каждому объекту добавлять заголовок. Перед использованием указателя анализировать содержимое заголовка. Возможны и более узкоспециализированные решения, но для них требуется знание деталей (порядок использования объектов, язык программирования).
0
|
||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
||
| 17.09.2025, 15:23 | ||
|
0
|
||
| 17.09.2025, 15:23 | |
|
помогите определить по какому алгоритму решить задачу Помогите решить задачу. Как расставить овец? Помогите решить задачу. Помоготе решить задачу Помогите решить задачу по архитектуре ЭВМ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|