Какие сборщики "мусора" там доступны для C++?

Вы не реализуете одноразовый шаблон через интерфейс IDisposable , у вас просто есть метод Dispose, в свою очередь вы не сможете вызвать его в операторе using.

public class Database : IDisposable { ... }

Это все немного подозрительно, я имею в виду, если вы уже используете его, вы не используете это в выражении using и, по-видимому, пытаетесь кэшировать соединение. Я бы вообще уклонялся от этого.

Также у вас есть деструктор, однако его использование некорректно в 99% случаев

6
задан Jon 26 April 2012 в 07:40
поделиться

6 ответов

Библиотека Boost включает некоторый материал shared_ptr, который в основном действует как сборщик "мусора" подсчета ссылок. При охвате принципа RAII дизайна C++ это и auto_ptr удовлетворят потребность в "сборщике"мусора"".

6
ответ дан 8 December 2019 в 04:56
поделиться

Несколько C++ GC перечислены на Википедию.

Однако я не использую никого, RAII является также моим другом.

5
ответ дан 8 December 2019 в 04:56
поделиться

Сборщик "мусора" Boehm довольно хорош для C, но хитер для использования под C++. Проверьте раздел "C ++ interface" по http://www.hpl.hp.com/personal/Hans_Boehm/gc/gcinterface.html.

Мое мнение - то, что, если Вам нужна сборка "мусора", выбрать langage, который имеет ее встроенный.

Лучшим общим решением для C++ являются совместно использованные указатели (от повышения, например) с Вами имеющий дело с круговыми зависимостями. Существует две вещи, которые можно сделать: 1. разработайте вещь без круговых зависимостей 2. разработайте вещь с 'опорой', которая повреждает круг для разрешения восстановления объектов

Или Вы имеете дело с очень плохим, замысловатым, трудно для отладки проблем со сборщиком "мусора" для C++, или Вы имеете дело с более простой классической проблемой освобождения Ваших объектов, когда Вы сделаны с ними.

5
ответ дан 8 December 2019 в 04:56
поделиться

Единственный, о котором я услышал лично, является сборщиком "мусора" Boehm, я уверен, что другие существуют, но я не имел дело с ними (или искал их любой).

4
ответ дан 8 December 2019 в 04:56
поделиться

Всегда существует, гм: C++ / CLI - C++ для Платформы.NET. Довольно хорошая сборка "мусора" там.:p

Хотя, честно говоря, со всем синтаксическим сахаром они помещают там, Вы могли почти считать это совершенно новым языком, который просто, оказывается, работает с C/C++ довольно хорошо.

Если Вы не женаты на C++ как язык, Вы могли бы также изучить D, который компилирует в собственный код как C++ (и в отличие от C++ / CLI), но также и имеет сборку "мусора".

2
ответ дан 8 December 2019 в 04:56
поделиться

Можно найти несколько реализаций здесь. Я никогда не пробовал ни одного из них, и в целом я нахожу недетерминированный GC, наносящий больше ущерба, чем хороший.

2
ответ дан 8 December 2019 в 04:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: