Большое количество объектов sp_counted_impl_p

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

Я обнаружил большое количество выделенных объектов sp_counted_impl_p, каждый из которых занимает 16 байт. Сколько объектов sp_counted_impl_p можно ожидать на shared_ptr? Есть у кого-нибудь идея?


person amit    schedule 31.03.2009    source источник


Ответы (2)


Из того, что я вижу в реализации, только по одному на shared_ptr. Однако обратите внимание, что есть больше объектов, используемых boost внутри, которые могут использовать этот подсчитанный класс напрямую или сам shared_ptr. Кроме того, если вы используете фреймворк boost.serialization, он также основан на этом классе / механизме. Во всяком случае, по «большому количеству», сколько их там?

person Diego Sevilla    schedule 31.03.2009
comment
хммм ... Теперь я думаю, что у меня только один на shared_ptr, но я собираю большое количество объектов! Спасибо за Ваш ответ. - person amit; 31.03.2009

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

person jpalecek    schedule 31.03.2009
comment
хммм ... Теперь я думаю, что у меня только один на shared_ptr, но я собираю большое количество объектов! Раньше я запускал valgrind, который сказал мне, что, по крайней мере, у меня нет ошибок двойного освобождения. Тем не менее, спасибо за ваш ответ. - person amit; 31.03.2009