Можно ли использовать сборщик мусора Boehm только для части программы?

StackOverflow https://stackoverflow.com/questions/2937822

Вопрос

я прочел Статья в Linuxjournal. о Библиотека сборщики мусора Boehm-demers-Weiser. Отказ Мне интересно использовать его в моей библиотеке вместо моей собственной реализации ссылок.

У меня есть только один вопрос: возможно ли использовать GC только для моей общей библиотеки и все еще используйте Malloc / Free в основном приложении? Я не совсем понимаю, как GC проверяет кучу, поэтому я беспокоюсь о производительности GC в этом случае и возможных побочных эффектов.

Это было полезно?

Решение

То пример В руководстве государства:

Обычно лучше не смешивать сборки мусора распределения с системой malloc-free. Отказ Если вы это сделаете, вам нужно быть осторожным, чтобы не хранить указатели на сборной мусора в памяти, выделенной системой malloc.

И более конкретно для C ++:

В случае C ++ вы должны особенно осторожны, чтобы не хранить указатели на сборной мусора в областях, которые не прослеживаются коллектором. Коллектор включает в себя некоторые альтернативные интерфейсы сделать это проще.

Глядя на исходный код в руководстве, вы увидите, что сборная мусора память обрабатывается через определенные вызовы, следовательно, управление обрабатывается отдельно (либо по коллектору, либо вручную). Таким образом, пока ваша библиотека правильно обрабатывает свои внутренние органы и не подвергается собранной памяти, вы должны быть в порядке. Вы не знаете, как другие библиотеки управляют своей памятью, и вы можете их использовать, а не? :)

Другие советы

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

Посмотреть на Gc_malloc_uncollectable. Спецификация функций Если вам нужен GC, чтобы учитывать ссылки в память, которые не должны собираться.

Таким образом, да, но Вот драконов Если вы не осторожны!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top