Автоматическое управление памятью для С++ Руководитель: Д.Ю. Булычев Грановский Александр, [email protected] Крень Мария, [email protected]
Автоматическое управление памятью
для С++
Руководитель: Д.Ю. Булычев
Грановский Александр, [email protected]Крень Мария, [email protected]
Введение
Сборка мусора - это один из способов автоматического управления динамическойпамятью.
Основные этапы сборки мусора
1) Найти roots
2) Пометить достижимые из roots объекты
3) Удалить непомеченные объекты
Виды сборщиков мусора
● Консервативный
● Неконсервативный
Задача
● Создать неконсервативный сборщик мусора, который подключался бы как header file.
Существующие решения
Инструменты
1) Утилита make2) GDB3) GCC4) Notepad5) С/С++
Как пользоваться JBGC
1) Указатели нужно заводить, как gc_ptr<type_name>
2) New вызывать так: gc_new<type_name>();
Пример
Почему так?
● Поскольку мы неконсервативны, нужно следить за всеми указателями.
● Свой шаблонный gc_new, потому что new не знает тип.
Нерешенные проблемы
Нерешенные проблемы
Нерешенные проблемы
● Не умеем при создании объекта использовать конструктор не по умолчанию.
● Используем много памяти, из-за чего время работы программы ухудшается. Данная проблема может быть решена использованием своей кучи.
Результат работы
Мы работаем, но не всегда...
Что будет дальше
Планы
● Прикрутим кучу
● Компиляция программы с ключами
● Решим проблему конструирования объектов