У счётчиков ссылок появился способ узнать их число по сырому указателю
22.08.2026У смарт-указателей с подсчётом ссылок появился способ узнать число сильных ссылок прямо по сырому указателю — без того чтобы восстанавливать сам смарт-указатель.
Зачем это нужно
Счётчик живёт в самом значении. Чтобы его прочитать, обычно нужно иметь сам смарт-указатель, а получить его из сырого указателя нельзя: безопасного способа нет.
Но есть случаи, где сырой указатель есть, а смарт-указателя нет. Например, когда значение хранится в неразмеченной памяти: на адрес не ссылается ни одна ссылка на смарт-указатель, и типичная подсчётка ссылок не сработает.
Новый способ читает счётчик там, где он фактически расположен.
Где это применяется
Низкоуровневые коллекции и структуры, которые хранят значения без счётчиков ссылок и оборачивают их в смарт-указатели вручную. Там счётчик всё равно нужен для корректного освобождения — и до сих пор прочитать его было нечем.
Реализация основана на предложении команды библиотеки, то есть это оформленный и обсуждённый приём, а не отдельная находка.
Оригинал
add Arc/Rc::strong_count_from_raw
Упоминаний: 1 · Просмотров: 3