Никогда не освобождайте память самостоятельно! Вместо этого сделайте следующее (в современном C++).
Code for yourself
0:00 / 0:00
Никогда не освобождайте память самостоятельно! Вместо этого сделайте следующее (в современном C++).
4 352 просмотра · 2 г. назад
Code for yourself
6,82 тыс. подписчиков
4 352 просмотра · 2 г. назад
Помогите мне продолжать делать эти видео!
Этот проект работает только благодаря вашей поддержке! Вы можете продемонстрировать это одним из следующих способов:
📚 Начать БЕСПЛАТНЫЙ пробный период Audible: https://www.audibletrial.com/CodeForY...
🛍️ Купить оборудование, которое я использую для создания этого видео: https://github.com/cpp-for-yourself/s...
💶 Стать спонсором напрямую на GitHub: https://github.com/sponsors/niosus
📺 Смотреть мои видео до конца и оставлять комментарии
⁉️ Найти свой способ поддержать эту работу можно здесь: https://github.com/cpp-for-yourself/s...
Пожалуй, это самое важное видео для понимания того, как выделяется память в C++. Более того, мы рассмотрим не только, как выделить память вручную, но и как это позволяет C++ работать так быстро, а также как сделать это безопасно в современном C++.
Мы рассмотрим
⏺ Что такое управление памятью
⏺ Почему сборка мусора — не лучший вариант
⏺ Что такое стек и как он обеспечивает быстрое выделение и освобождение памяти для небольших переменных
⏺ Почему стек плохо подходит для постоянных данных
⏺ Что такое куча и как она полезна для выделения памяти для постоянных данных
⏺ Какие проблемы могут возникнуть при ручном выделении памяти
⏺ Как умные указатели позволяют безопасно выделять память
📚 Ссылка на скрипт к этому видео на GitHub: https://github.com/cpp-for-yourself/s...
🔗 Ссылки
⏺ Сборка мусора в Java: https://dzone.com/articles/choosing-t...
⏺ Уникальный указатель: https://en.cppreference.com/w/cpp/mem...
⏺ Общий указатель: https://en.cppreference.com/w/cpp/mem...
⏺ Изображения монет взяты с сайта pexels.com
⏺ Изображение Дональда Кнута взято из Википедии
⏺ Изображение сборки мусора: https://w3schoolsua.github.io/svg/gar...
Содержание
00:00 - Начало
00:25 - Что такое управление памятью
02:10 - Почему C++ так хорош
04:02 - Выделение и освобождение памяти
05:07 - Стек
06:18 - Практический пример работы со стеком
08:06 - Почему не выделять постоянные данные в стеке
09:42 - Куча
12:37 - Практический пример работы со стеком пример
13:43 — Проблемы с ручным выделением памяти
18:45 — Умные указатели
Исправления:
8:24 В этом примере много проблем: не только это не совсем C++, поскольку динамически изменяемые массивы в стиле C — это расширение компилятора, а не часть языка, но и в нём отсутствует include для std::byte. Это просто для иллюстрации того, как мы можем переполнить стек.
#cplusplus #программирование #кодирование #руководство