Вступить в клуб →
лёгкаявопросПамять и RAII

Ранний выход из функции при ручном new/delete

Вы читаете код старого модуля:

void process(const Request& r) {
    Buffer* b = new Buffer(1024);
    if (!b->load(r)) {
        return;
    }
    b->run();
    delete b;
}

Что произойдёт, если load() вернёт false?

  • Память под `Buffer` не освободится: `delete` не выполнится
  • Объект будет уничтожен, потому что указатель `b` выходит из области видимости, а вместе с ним разрушается и всё, на что он ссылается
  • Компилятор вставит вызов `delete` перед каждым `return` автоматически
  • Утечки нет: динамическая память возвращается системе сразу после выхода из функции

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела