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

Лекции

  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Мое обучение
  • Курсы
  • Университет
  • Карта квестов
  • Лекции
  • Nullable API: pointer, std::optional и sentinel-значения

    C++ SELF
    41 уровень,0 лекция
    Разбираем три способа выразить «значение может отсутствовать» в C++: вернуть указатель T* и проверить nullptr, вернуть результат как std::optional<T> и обработать std::nullopt, либо использовать sentinel-значения вроде std::string::npos. Учимся выбирать подход по смыслу («доступ к объекту» vs «значение-результат»), делаем мини-рефакторинг API и фиксируем типичные ошибки.
    Открыта
  • Инвалидация в std::vector: reallocation, erase

    C++ SELF
    41 уровень,1 лекция
    Разбираем, что такое инвалидация ссылок/указателей/итераторов в std::vector, почему контейнер «переезжает» при росте ( reallocation), как удаление через erase сдвигает элементы и ломает старые адреса, почему const не спасает, и как мыслить «картой рисков» по операциям ( push_back, reserve, resize, erase) чтобы не нарваться на UB.
    Открыта
  • Избегаем хранения указателей на элементы контейнеров

    C++ SELF
    41 уровень,2 лекция
    Разбираем практическую проблему C++: почему хранить указатели/ссылки на элементы std::vector в долгоживущем состоянии опасно (инвалидация из-за reallocation и сдвигов после erase), как это превращается в UB, и чем заменять такие «ссылки на элемент» — индексом ( std::optional<std::size_t>) или устойчивым идентификатором ( id), переполучая доступ заново.
    Открыта
  • new/delete и new[]/delete[]: несоответствие UB

    C++ SELF
    41 уровень,3 лекция
    Разбираем, как на самом деле работают new/ delete и new []/ delete [] в C++: какие шаги выполняются при выделении памяти и конструировании объектов, чем отличается инициализация new int от new int {}, почему delete завершает время жизни объекта, и главное — почему перепутанные формы удаления дают UB.
    Открыта
  • Баги ручной памяти — leak / use-after-free / double-free

    C++ SELF
    41 уровень,4 лекция
    Разбираем три классических аварии ручного управления памятью в C++: leak, double-free и use-after-free. Фиксируем «золотой инвариант» пар new/ delete и new []/ delete [], смотрим типовые сценарии (ранний return, перезапись указателя, алиасы), а затем на мини‑кейсе с legacy‑заметками на char* видим, как неявное владение приводит к UB.
    Открыта
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush