ЛР6. Час життя і висячі вказівники: аналіз коду
Коротко про роботу
Ви аналізуєте короткий фрагмент із блоками та вказівниками на локальні об’єкти. Варіант визначає STUDENT_X.
Відкрити робочий зошит Як виконувати лабораторні
1. Умова
Ви аналізуєте короткий фрагмент із блоками та вказівниками на локальні об’єкти.
Усі обчислення виконуйте з даними свого STUDENT_X. Значення варіанта друкує перша комірка зошита.
2. Що треба знати
Робота виконується після Л1–Л3. Потрібні поняття:
- локальна область видимості
- час життя об’єкта
- розіменування вказівника
- висячий стан і невизначена поведінка
Межа матеріалу
Використовуйте поняття, вивчені до Л1–Л3. Не використовуйте new, delete, unique_ptr або інші засоби, яких ще не було в лекціях.
3. Варіант, вхідні дані та результат
У зошиті заповніть STUDENT_NAME, STUDENT_GROUP і STUDENT_X від 1 до 30.
Вхідні дані
| Поле | Зміст |
|---|---|
archetype |
номер схеми фрагмента |
outer_value |
значення зовнішнього об’єкта |
inner_value |
значення внутрішнього об’єкта |
starter_code |
фрагмент для аналізу |
Поля результату
| Поле | Зміст |
|---|---|
final_access_safe |
чи безпечний фінальний доступ |
unsafe_line_number |
номер небезпечного рядка або 0 |
safe_result |
результат після безпечного виправлення |
Назви полів результату не змінюйте.
4. Терміни і правила
Терміни
- час життя об’єкта — період від створення об’єкта до його знищення.
- висячий вказівник — вказівник, що зберіг адресу об’єкта, час життя якого вже завершився.
Правила
starter_codeє повною умовою для аналізу коду. МіткиR1,R2, ... позначають рядки для відповіді.final_access_safeмає значенняtrue, коли фінальний доступ звертається до живого об’єкта.unsafe_line_numberдорівнює номеру небезпечного фінального рядка; для безпечного фрагмента використовуйте0.safe_result— значення, яке має отримати мінімальне безпечне виправлення зі збереженням задуму фрагмента.
5. Завдання
Завдання 1
Прочитайте starter_code. Позначте, де починається і закінчується час життя кожного локального об’єкта.
Завдання 2
Визначте, чи безпечний фінальний доступ. Запишіть final_access_safe і unsafe_line_number.
Завдання 3
Виправте фрагмент так, щоб не було доступу через висячий вказівник. Запишіть результат у safe_result.
6. Перевірка і здача
- Запустіть самоперевірку та виправте помилки.
- Перезапустіть ядро і виконайте роботу ще раз від початку.
- Збережіть
.ipynbі PDF з кодом та результатами.
Назва PDF: LR06_Прізвище_Група_VNN.pdf.