2014-08-01 3 views
0

в C++ 11, у нас есть shared_ptr, и когда мы используем его вместе с new, нам не нужно будет явным образом вызывать delete позже. эта часть работы была позабочена на shared_ptr.C++, умный указатель и сбор мусора

с учетом сказанного, почему ppl продолжает говорить, что сборщик мусора в C++?

Что здесь отсутствует?

Могу ли я использовать/думать о shared_ptr как сборщик мусора в C++?

ответ

0

На языках, где есть сбор мусора, например Java и C#, вы не можете избежать этого. Все объекты автоматически собираются с мусором.

C++ позволяет вам автоматически очищать после себя, но вы должны выбрать, чтобы использовать его.

+0

последующие действия: могу ли я использовать/думать об shared_ptr как сборщик мусора в C++? –

+0

Ух не совсем. Сбор мусора - это независимый процесс, который периодически очищает незарегистрированную память. Умные указатели - это просто объекты, которые автоматически очищают свою связанную память, когда они разрушаются. Умные указатели практически не требуют затрат времени исполнения, в то время как GC может иметь потенциал довольно больших затрат времени исполнения. – jready

+2

@ResidentBiscuit Ссылочный счетчик ссылок с интеллектуальными указателями несут затраты времени исполнения. Подсчет ссылок не предоставляется бесплатно. – juanchopanza

0

shared_ptr - тип класса, когда экземпляр shared_ptr уничтожен, деструктор shared_ptr освободит память, это не GC.

+0

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

+0

@FredLarson, да, вы правы! Благодаря! – Matt

Смежные вопросы