JavaRush
Акция
Университет
Java FullStack
Python FullStack
AI Native Developer
new
Web FullStack
Обучение
Курсы
Задачи
Опросы
Игры
Помощь
График пинков
Стажировка
Сообщество
Пользователи
Форум
Чат
Статьи
Истории успеха
Активности
Отзывы
Подписки
Светлая тема

Лекции

  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Мое обучение
  • Курсы
  • Университет
  • Карта квестов
  • Лекции
  • Циклы владения — как возникает утечка “без delete”

    C++ SELF
    44 уровень,0 лекция
    Разбираем, почему даже с std::shared_ptr можно получить утечку памяти без единого delete: как образуется цикл владения, почему счётчики ссылок не падают до 0, как диагностировать проблему через деструкторы и почему “чинить” это ручными reset() — опасная заплатка. На примере связки Task ↔ Column подводим к идее невладеющих ссылок и роли std::weak_ptr.
    Открыта
  • std::weak_ptr — наблюдатель и разрыв циклов

    C++ SELF
    44 уровень,1 лекция
    Разбираем, зачем нужен std::weak_ptr в C++: как хранить «ссылку для навигации» без владения, почему циклы из std::shared_ptr приводят к утечкам, как безопасно получать доступ через lock(), и как проектировать связи «владеет/наблюдает» на примере модели Project– Task.
    Открыта
  • Правило выбора: unique_ptr по умолчанию, shared_ptr

    C++ SELF
    44 уровень,2 лекция
    Разбираем практическое правило владения в C++: почему по умолчанию стоит выбирать std::unique_ptr, в каких случаях совместное владение через std::shared_ptr действительно оправдано, зачем нужен std::weak_ptr для разрыва циклов, и как «читать» роли ссылок (владелец/совладелец/наблюдатель) прямо по типам в API. В конце — таблица выбора, мини-схема и типичные ошибки.
    Открыта
  • Какие спец‑функции генерирует компилятор и когда

    C++ SELF
    44 уровень,3 лекция
    Разбираем, какие special member functions компилятор C++ генерирует автоматически и при каких условиях это происходит: конструктор по умолчанию T(), деструктор ~T(), копирующий конструктор T(const T&) и копирующее присваивание operator=. Отдельно обсуждаем, почему операции могут стать implicitly deleted (например, из‑за поля std::unique_ptr) и как это связано с моделью владения ресурсами.
    Открыта
  • Rule of Zero — проектируем тип без управления ресурсами

    C++ SELF
    44 уровень,4 лекция
    Разбираем практический смысл Rule of Zero: как проектировать «value-like» типы без самописных деструкторов и копирования, полагаясь на RAII-поля вроде std::string и std::vector. Обсуждаем, почему владение через * ( T*) и ручные new/ delete часто ведут к ошибкам, и как честная семантика владения выражается через std::unique_ptr и std::shared_ptr.
    Открыта
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush