увеличить shared_ptr получить количество владельцев - PullRequest
3 голосов
/ 21 сентября 2011

Я использую boost :: shared_ptr для хранения указателя на текстуру. Я загружаю новые текстуры по мере необходимости и делюсь ими с программой с помощью shared_ptr. Если мое приложение использует слишком много памяти, я хочу удалить неиспользуемые текстуры, чтобы очистить память. Есть ли способ, которым я могу определить, сколько объектов имеют доступ к текстуре через shared_ptr?

Ответы [ 4 ]

6 голосов
/ 21 сентября 2011

Если он не используется, shared_ptr автоматически освободит его.В этом смысл shared_ptr.Если вы держите текстуру shared_ptr без ее фактического использования, то вы нарушаете контракт shared_ptr и не должны его использовать.

2 голосов
/ 21 сентября 2011

Вы можете использовать shared_ptr::use_count(), но перед этим прочитайте документацию!

1 голос
/ 21 сентября 2011

Класс shared_ptr имеет функции-члены use_count() и unique() для предоставления вам доступа к счетчику его использования.

Другой вопрос, насколько эта информация будет полезна для вас.

1 голос
/ 21 сентября 2011

Существует use_count(), однако обратите внимание, что, как говорится в документации, это не обязательно слишком эффективно.

...