Оцените презентацию от 1 до 5 баллов!
Тип файла:
ppt / pptx (powerpoint)
Всего слайдов:
29 слайдов
Для класса:
1,2,3,4,5,6,7,8,9,10,11
Размер файла:
536.71 kB
Просмотров:
94
Скачиваний:
0
Автор:
неизвестен
Слайды и текст к этой презентации:
№1 слайд![Управление ресурсами](/documents_6/93fd488f5e070b6b6cc773aad825ac5a/img0.jpg)
Содержание слайда: Управление
ресурсами
№2 слайд![](/documents_6/93fd488f5e070b6b6cc773aad825ac5a/img1.jpg)
№3 слайд![Физические ресурсы Процессор](/documents_6/93fd488f5e070b6b6cc773aad825ac5a/img2.jpg)
Содержание слайда: Физические ресурсы
Процессор
Оперативная память
Жесткий диск
Сетевой адаптер
Видеокарта
Звуковая карта
Устройства ввода/вывода (клавиатура, мышь, принтер, сканер и т.п.)
№4 слайд![Виртуальные ресурсы](/documents_6/93fd488f5e070b6b6cc773aad825ac5a/img3.jpg)
Содержание слайда: Виртуальные ресурсы
Виртуальная память
Файлы
Сокеты
Объекты синхронизации (мьютекс, критическая секция, семафор и т.п.)
Объекты межпроцессного взаимодействия (pipes, mapped files, mailslots и т.п.)
Аттрибуты безопасности, дескрипторы объектов ОС и т.п.
№5 слайд![C storage duration categories](/documents_6/93fd488f5e070b6b6cc773aad825ac5a/img4.jpg)
Содержание слайда: C++ storage duration categories
Static – глобальные переменные, статические локальные переменные, статические члены классов. Создаются при запуске приложения и разрушаются при выходе.
Thread storage (C++ 11) – переменные, доступные только в потоке (обозначаются ключевым словом thread_local). Создаются при старте потока, разрушаются при завершении его работы.
Automatic – локальные переменные. Разрушаются на выходе из блока, в котором они созданы.
Dynamic – создаются при помощи операторов new и разрушаются при помощи операторов delete.
№6 слайд![Объекты с автоматической](/documents_6/93fd488f5e070b6b6cc773aad825ac5a/img5.jpg)
Содержание слайда: Объекты с автоматической продолжительностью хранения
Преимущества:
1. Быстрое выделение памяти.
2. Объекты на стеке автоматически разрушаются при выходе из области видимости.
Недостатки:
1. Размер стека ограничен (по умолчанию в Visual C++ 1Mb для каждого потока).
2. Нужно знать размер объекта на этапе компиляции.
3. Стеком сложнее управлять.
№7 слайд![Специальные методы классов .](/documents_6/93fd488f5e070b6b6cc773aad825ac5a/img6.jpg)
Содержание слайда: Специальные методы классов
1. Версии конструкторов копирования и операторов присваивания, генерируемые компилятором, осуществляют “shallow copy” членов. Необходимо переопределять их, если такое поведение неверно.
class Test {
int* m_data;
Test(const Test& other) {
m_data = new int(*other.m_data);
}
};
№8 слайд![Специальные методы классов .](/documents_6/93fd488f5e070b6b6cc773aad825ac5a/img7.jpg)
Содержание слайда: Специальные методы классов
2. Проверяйте в операторе присваивание случай самоприсваивания:
Test& operator=(const Test& other) {
if (this != &other) {
delete m_data;
m_data = new int(*other.m_data);
}
return *this;
}
№9 слайд![Общая схема работы с](/documents_6/93fd488f5e070b6b6cc773aad825ac5a/img8.jpg)
Содержание слайда: Общая схема работы с ресурсами
Захватить ресурс (open, create, allocate, attach)
Использовать ресурс
Освободить ресурс (close, free, delete, detach)
Внимание:
Если операция захвата ресурса возвращает статус успешности, всегда проверяйте его.
Используйте правильную операцию для освобождения ресурса
№10 слайд![Захват ресурса без](/documents_6/93fd488f5e070b6b6cc773aad825ac5a/img9.jpg)
Содержание слайда: Захват ресурса без освобождения
№11 слайд![Ручное управление ресурсами](/documents_6/93fd488f5e070b6b6cc773aad825ac5a/img10.jpg)
Содержание слайда: “Ручное” управление ресурсами
№12 слайд![Stack unwinding](/documents_6/93fd488f5e070b6b6cc773aad825ac5a/img11.jpg)
Содержание слайда: Stack unwinding
№13 слайд![Использование RAII guards](/documents_6/93fd488f5e070b6b6cc773aad825ac5a/img12.jpg)
Содержание слайда: Использование RAII (guards)
№14 слайд![std auto ptr](/documents_6/93fd488f5e070b6b6cc773aad825ac5a/img13.jpg)
Содержание слайда: std::auto_ptr
№15 слайд![std auto ptr Недостатки Не](/documents_6/93fd488f5e070b6b6cc773aad825ac5a/img14.jpg)
Содержание слайда: std::auto_ptr
Недостатки:
Не может использоваться в контейнерах STL.
Не может быть использован с new[].
Неочевидная передача владения (при копировании и передаче в качестве параметра функции по значению).
Нельзя использовать с другими типами ресурсов, отличными от памяти.
№16 слайд![std unique ptr](/documents_6/93fd488f5e070b6b6cc773aad825ac5a/img15.jpg)
Содержание слайда: std::unique_ptr
№17 слайд![std unique ptr](/documents_6/93fd488f5e070b6b6cc773aad825ac5a/img16.jpg)
Содержание слайда: std::unique_ptr
№18 слайд![std unique ptr](/documents_6/93fd488f5e070b6b6cc773aad825ac5a/img17.jpg)
Содержание слайда: std::unique_ptr
№19 слайд![std make unique](/documents_6/93fd488f5e070b6b6cc773aad825ac5a/img18.jpg)
Содержание слайда: std::make_unique
№20 слайд![std shared ptr](/documents_6/93fd488f5e070b6b6cc773aad825ac5a/img19.jpg)
Содержание слайда: std::shared_ptr
№21 слайд![std shared ptr](/documents_6/93fd488f5e070b6b6cc773aad825ac5a/img20.jpg)
Содержание слайда: std::shared_ptr
№22 слайд![Внутреннее устройство shared](/documents_6/93fd488f5e070b6b6cc773aad825ac5a/img21.jpg)
Содержание слайда: Внутреннее устройство shared_ptr
№23 слайд![Пример использования weak ptr](/documents_6/93fd488f5e070b6b6cc773aad825ac5a/img22.jpg)
Содержание слайда: Пример использования weak_ptr
№24 слайд![Передача smart pointers как](/documents_6/93fd488f5e070b6b6cc773aad825ac5a/img23.jpg)
Содержание слайда: Передача smart pointers как аргумента
№25 слайд![Передача smart pointers как](/documents_6/93fd488f5e070b6b6cc773aad825ac5a/img24.jpg)
Содержание слайда: Передача smart pointers как аргумента
№26 слайд![Контейнеры void FillBuffer](/documents_6/93fd488f5e070b6b6cc773aad825ac5a/img25.jpg)
Содержание слайда: Контейнеры
void FillBuffer(
void* pBuffer,
size_t bufferSize);
// version with raw ponter
uint8_t *buf = new uint8_t[size];
FillBuffer(buf, size);
delete[] buf;
№27 слайд![Контейнеры First DLL vector](/documents_6/93fd488f5e070b6b6cc773aad825ac5a/img26.jpg)
Содержание слайда: Контейнеры
// First DLL
vector<Message> messages;
FillMessages(messages);
№28 слайд![Exception safety . Базовая](/documents_6/93fd488f5e070b6b6cc773aad825ac5a/img27.jpg)
Содержание слайда: Exception safety
1. Базовая гарантия – контейнер при возникновении исключения остается в согласованном состоянии; нет утечек ресурсов (пример – вставка диапазона элементов).
2. Строгая гарантия – либо операция заканчивается успешно, либо она не выполняется вообще (пример vector::push_back).
3. No-throw (nofail) гарантия – операция всегда заканчивается успешно (пример std::swap).
Гарантия предоставляется, если код, предоставляемый пользователем, не оставляет элементы контейнера в недопустимом состоянии; не приводит к утечкам ресурсов и деструкторы не кидают исключений.
№29 слайд![Another guards . Часы и](/documents_6/93fd488f5e070b6b6cc773aad825ac5a/img28.jpg)
Содержание слайда: Another guards
1. Часы и таймеры STL.
2. Потоки STL (std::thread, std::mutex, std::lock, etc.).
3. Потоки ввода вывода STL (input/output streams).
4. «Стражи» в ATL (CComPtr, CComSafeArray, СComBSTR, CComVariant)
5. «Стражи» в boost (scoped_ptr, scoped_array, share_array)