Понятие динамической памяти
Динамическая память — это область оперативной памяти компьютера, которая выделяется во время выполнения программы под нужды приложения. Она используется для хранения переменных и объектов, размер которых заранее неизвестен или изменяется во время работы программы.
Основные операции с динамической памятью
Выделение памяти: операция выделения блока памяти определенного размера называется new. В языке С++ запись выглядит так:
int* ptr = new int(10).Освобождение памяти: освобождение занятого ранее блока памяти осуществляется операцией delete:
delete ptr.
Аллокаторы и деаллокаторы
Аллокатор отвечает за выделение памяти, а деаллокатор — за её освобождение. Стандарт языка С++ предоставляет интерфейс аллокаторов через шаблон класса std::allocator. Пример использования аллокатора: ```cpp #include <memory> using namespace std;
int main() { unique_ptr<int> p(new int(10)); } ```
Управление ресурсами
Управление ресурсами включает контроль над использованием ресурсов системы, таких как оперативная память, файлы, сетевые соединения и другие системные ресурсы.
Ресурсы и их утечки
Утечка ресурса происходит, когда программа выделяет ресурс, но не освобождает его должным образом. Это приводит к нехватке доступных ресурсов и нестабильной работе программы.
Примеры управления ресурсами
Использование умных указателей (
unique_ptr,shared_ptr) позволяет автоматически управлять жизненным циклом объекта и предотвращать утечки памяти.Пример безопасного освобождения файла после завершения работы:
```cpp #include <iostream> #include <fstream>
int main() { std::ifstream file("example.txt"); if (!file.is_open()) { std::cerr << "Не удалось открыть файл" << std::endl; return -1; }
// Работа с файлом...
file.close(); // безопасное закрытие файла } ```
Пропуски для самопроверки