У счётчиков ссылок появился способ узнать их число по сырому указателю

22.08.2026

У смарт-указателей с подсчётом ссылок появился способ узнать число сильных ссылок прямо по сырому указателю — без того чтобы восстанавливать сам смарт-указатель.

Зачем это нужно

Счётчик живёт в самом значении. Чтобы его прочитать, обычно нужно иметь сам смарт-указатель, а получить его из сырого указателя нельзя: безопасного способа нет.

Но есть случаи, где сырой указатель есть, а смарт-указателя нет. Например, когда значение хранится в неразмеченной памяти: на адрес не ссылается ни одна ссылка на смарт-указатель, и типичная подсчётка ссылок не сработает.

Новый способ читает счётчик там, где он фактически расположен.

Где это применяется

Низкоуровневые коллекции и структуры, которые хранят значения без счётчиков ссылок и оборачивают их в смарт-указатели вручную. Там счётчик всё равно нужен для корректного освобождения — и до сих пор прочитать его было нечем.

Реализация основана на предложении команды библиотеки, то есть это оформленный и обсуждённый приём, а не отдельная находка.

Оригинал

add Arc/Rc::strong_count_from_raw

Упоминаний: 1 · Просмотров: 3