3
Моя цель - создать простой сборщик мусора с меткой на языке C++. Первым шагом в фазе метки является получение всех корней (стеки потоков, глобальные переменные ...). Итак, как я могу найти или найти эти корни в моем коде на C++?Получение корней для Mark Sweep Сборщик мусора C++
Вы, вероятно, нужно написать компилятор, который собирает эту информацию. –
Посмотрите на консервативный коллектор Бем для одного возможного подхода: https://en.wikipedia.org/wiki/Boehm_garbage_collector –
. Одна из возможных вещей, которую вы можете сделать, - вызвать функцию для регистрации каждого корневого объекта и позволить вашему коллекционеру сохранить список. Не очень удобно, но легко реализовать (по сравнению с написанием нового компилятора), и все же может быть полезным для некоторых случаев. Или посмотрите на это: http://stackoverflow.com/questions/147130/why-doesnt-c-have-a-garbage-collector?rq=1 –