Есть ли в C ++ сборщик мусора? - PullRequest
14 голосов
/ 23 февраля 2011

В настоящее время я читаю неизданный отчет по магистерской работе, о котором собираюсь дать отзыв.

В отчете упоминается GC под собственным C ++ и управляемым C ++. Я думал, что C ++ не имеет стандартного GC, я не прав или нет? (Они не упоминают Бем-Демерс-Вайзер.)

У них есть некоторые проблемы, заставляющие его работать при некоторых условиях. Они создают объекты в одном потоке и удаляют указатель из другого потока.

Ответы [ 4 ]

18 голосов
/ 23 февраля 2011

Управляемый C ++ (и его преемник C ++ / CLI), конечно, используют сборку мусора .NET для управляемых ресурсов (хотя собственные ресурсы не являются сборщиком мусора и должны управляться вручную, как в собственном C ++).

В родном C ++ по умолчанию такого нет (наиболее близки к этому умные указатели, но это все же нечто совершенно иное), но это не мешает вам написать собственное решение для сбора мусора (или использовать ). стороннее решение ).

9 голосов
/ 23 февраля 2011

Существующий стандарт C ++ от 1998/2004 не предусматривает сборщика мусора.В следующем стандарте C ++ 0x определен необязательный API сборщика мусора, однако реализация является другой частью.Учитывая все вышесказанное, существуют сборщики мусора для C ++ от поставщиков компиляторов и сторонних производителей.

  • Пакет GCC предоставляет Boehm-GC для сборки мусора.
  • Управляемый C ++ был расширением Microsoft дляC ++ выпущен с .Net 1.0, который расширил C ++ с возможностями сбора мусора.
  • Существует также C ++ / CIL от Microsoft, выпущенный с .Net 2, который устарел в Managed C ++ с более .NET-ориентированными функциями.
  • Sun Предоставил libgc в качестве сборщика мусора для C / C ++.
0 голосов
/ 23 ноября 2012

У меня другой взгляд на GC под C ++.

Взгляните на MCP (лицензия с открытым исходным кодом GPLv3) - GC с C ++ не должен быть хуже GJC/ Моно.

0 голосов
/ 23 февраля 2011

Единственная библиотека GC для C и C ++ - это Библиотека Ханса-Бома , но, насколько я знаю, ее трудно установить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...