2013-12-19 3 views
0

У меня есть проект, и я должен реализовать сборщик мусора в C++. Теперь я должен доставить диаграммы классов, но я не знаю, как это сделать.Сборщик мусора в C++

Может кто-нибудь объяснить мне, что делает сборщик мусора? Google не помог мне !! Я нашел много вещей с большим количеством классов и переменных.

Рассмотрим простой язык, в котором есть только два предопределенных классов, Int и Real (как в Java), выделенных на 4 или 8 байт.

  • У меня есть заявления, как Int А, реальные б

  • операторов присваивания (х = у)

  • возвращения заявления (возврат х)

-Когда декларирование объект, память выделяется из области памяти, соответствующей динамическому распределению правильного размера и свободного адреса, ссылочный счетчик объекта является исходным ized до 1

-Все задание, объект подсчета числа приращений. То же самое происходит при переходе значения, присутствующего в функции, а также инструкции для возвращения

-Каждый раз, когда функция тело заканчивается там, где есть декларация объекта, она уменьшает счетчик ссылок

- Когда счетчик ссылок объекта достиг 0, он освобождает память

Сколько классов следует реализовать? Есть только 2 предопределенных класса ... каждый класс должен иметь переменную «counter», или есть 3-й класс, у которого есть счетчик?

+3

Это называется «подсчет ссылок», а не «сбор мусора». – dasblinkenlight

+0

Примечание Комментарий dasblinkenlight: используйте 'std :: shared_ptr' – Bathsheba

+1

@dasblinkenlight: Я бы подумал, что« подсчет ссылок »можно рассматривать как тип/компонент GC ... –

ответ

1

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

Обратите внимание, что это не касается переменных, выделенных на стеке, как

int a; 
char b; 

но с переменными, выделенных в куче (то есть, выделенные с помощью new заявление).

На практике, когда у вас есть сборщик мусора, вам больше не нужно указывать delete переменные, потому что сборщик мусора сделает это за вас.

+0

Помимо «периодического обслуживания» у вас есть определение о праве. И в теории он МОЖЕТ применяться к автоматическим (стек) переменным, но не в какой-либо реальной реализации. –

+0

@Jefffrey - Он не имеет в виду стек. –

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