Скачиваний:
55
Добавлен:
05.07.2021
Размер:
112.55 Кб
Скачать

5 Скриншоты выполнения индивидуального задания

ВЫВОД

В ходе выполнения лабораторной работы была изучена реализация smart-указателей, механизма транзакций и иерархий классов. Работа над лабораторной работой позволила понять смысл утечки памяти, висячей ссылки, идиомы программирования RALL и виды интеллектуальных указателей. Была разработана программа с использованием новых понятий, изученных в лабораторной работе.

Ответы на контрольные вопросы:

  1. Для управления динамической памятью в языке C++ используются два оператора: оператор new, который резервирует (а при необходимости и инициализирует) объект в динамической памяти и возвращает указатель на него; оператор delete, который получает указатель на динамический объект и удаляет его, освобождая зарезервированную память. Работа с динамической памятью проблематична, поскольку сложно гарантировать освобождение памяти в нужный момент. Если забыть освобождать память вовремя, то появится утечка памяти, если освободить область памяти слишком рано, пока еще есть указатели на нее, то получится указатель на несуществующую область памяти.

  2. Интеллектуальный указатель (smart pointer) действует, как обычный указатель, но с важным дополнением: автоматически удаляет объект, на который он указывает. Умный указатель обычно является шаблонным классом.

  3. Уте́чка па́мяти — процесс неконтролируемого уменьшения объёма свободной оперативной или виртуальной памяти компьютера, связанный с ошибками в работающих программах, вовремя не освобождающих ненужные участки памяти.

  4. Висячей ссылкой или висячим указателем (dangling pointer, wild pointer, dangling reference) называется указатель, ссылающийся на уже удалённый объект.

  5. Библиотека С++ определяет два вида интеллектуальных указателей, отличающихся способом управления своими базовыми указателями: указатель std::shared_ptr позволяет нескольким указателям указывать на тот же объект, а указатель std::unique_ptr — нет. В отличие от указателя std::shared_ptr, только один указатель типа std::unique_ptr может одновременно указывать на конкретный объект. Библиотека языка С++ определяет также сопутствующий класс std::weak_ptr, являющийся второстепенной ссылкой на объект.

  6. RAII или Resource Acquisition Is Initialialization — получение ресурса является инициализацией. То есть, при получении какого-либо ресурса, его инициализируют в конструкторе, а, поработав с ним, корректно освобождают в деструкторе. Главная задача идиомы RAII— обеспечить, чтобы одновременно с получением ресурса производилась инициализация объекта.

  7. Транзакция в информатике − группа последовательных операций, которая представляет собой логическую единицу работы с данными. Транзакция может быть выполнена либо целиком и успешно, соблюдая целостность данных и независимо от параллельно идущих других транзакций, либо не выполнена вообще и тогда она не должна произвести никакого эффекта. При этом должно соблюдаться следующее: − если клиент начал и не завершил транзакцию, то другие клиенты не видят его изменений; − две транзакции не могут одновременно менять одни и те же данные.

  8. Для поддержки механизма транзакции объект должен содержать два указателя (на текущий объект и на объект, представляющий его предыдущее состояние) и функции (начать, закрепить, отменить действие).

Соседние файлы в папке лабы Салапура 2ая часть (4 семестр)