Top Banner
Автоматическое управление памятью для С++ Руководитель: Д.Ю. Булычев Грановский Александр, [email protected] Крень Мария, [email protected]
16

Automated Memory Management for C++

Jan 24, 2015

Download

Education

 
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Automated Memory Management for C++

Автоматическое управление памятью

для С++

Руководитель: Д.Ю. Булычев

Грановский Александр, [email protected]Крень Мария, [email protected]

Page 2: Automated Memory Management for C++

Введение

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

Page 3: Automated Memory Management for C++

Основные этапы сборки мусора

1) Найти roots

2) Пометить достижимые из roots объекты

3) Удалить непомеченные объекты

Page 4: Automated Memory Management for C++

Виды сборщиков мусора

● Консервативный

● Неконсервативный

Page 5: Automated Memory Management for C++

Задача

● Создать неконсервативный сборщик мусора, который подключался бы как header file.

Page 6: Automated Memory Management for C++

Существующие решения

Page 7: Automated Memory Management for C++

Инструменты

1) Утилита make2) GDB3) GCC4) Notepad5) С/С++

Page 8: Automated Memory Management for C++

Как пользоваться JBGC

1) Указатели нужно заводить, как gc_ptr<type_name>

2) New вызывать так: gc_new<type_name>();

Page 9: Automated Memory Management for C++

Пример

Page 10: Automated Memory Management for C++

Почему так?

● Поскольку мы неконсервативны, нужно следить за всеми указателями.

● Свой шаблонный gc_new, потому что new не знает тип.

Page 11: Automated Memory Management for C++

Нерешенные проблемы

Page 12: Automated Memory Management for C++

Нерешенные проблемы

Page 13: Automated Memory Management for C++

Нерешенные проблемы

● Не умеем при создании объекта использовать конструктор не по умолчанию.

● Используем много памяти, из-за чего время работы программы ухудшается. Данная проблема может быть решена использованием своей кучи.

Page 14: Automated Memory Management for C++

Результат работы

Мы работаем, но не всегда...

Page 15: Automated Memory Management for C++

Что будет дальше

Page 16: Automated Memory Management for C++

Планы

● Прикрутим кучу

● Компиляция программы с ключами

● Решим проблему конструирования объектов