Определение строк с нарушениями в программе

Все отмеченные объявления допустимы: ptr разыменовывается уже после new. Основная ошибка — утечка выделенного int, поскольку перед выходом нет delete.

Короткий ответ

Что ответить на собеседовании

Все отмеченные объявления допустимы: ptr разыменовывается уже после new. Основная ошибка — утечка выделенного int, поскольку перед выходом нет delete.

Подробный разбор

Ответ с пояснениями

Условие

Необходимо указать, в каких строках данного фрагмента кода присутствуют ошибки.

#include <iostream>
using namespace std;

int main() {
    int* ptr = nullptr;       // 1
    ptr = new int(1);         // 2
    const int val = *ptr;       // 3
    int const* cptr = ptr;       // 4
    int& ref = *ptr;            // 5
    return 0;
}

Ответ

Все отмеченные объявления допустимы: ptr разыменовывается уже после new. Основная ошибка — утечка выделенного int, поскольку перед выходом нет delete.

const int val создаёт отдельную неизменяемую копию. int const* cptr запрещает изменение через cptr, но сам объект остаётся изменяемым через ptr или ref. Ссылка ref также корректно привязана к существующему int.

Добавление delete ptr; перед возвратом устраняет утечку, если после него больше не обращаться через эти указатели и ссылку. Проще вообще использовать локальный int либо unique_ptr, если динамическое размещение действительно нужно.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее