DP Delphi / Pascal  ·  20 вопросов  ·  ~55 мин  ·  ⏱ Таймер 55:00  ·  Лёгкий  · 

Указатели и динамическая память

Задания построены вокруг реальных решений: прочитать фрагмент, найти ошибочное допущение, выбрать безопасную правку и закрепить её тестом. Всего 20 вопросов и 12 задач с кодом; тематические шкалы охватывают «Типизированные указатели», «Сырая динамическая память», «Типизированное выделение памяти» и «Висячие указатели».

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: В каждом вопросе выберите один ответ из пяти. На весь тест отведено 55 минут. Код лучше сначала разобрать вручную: правильный вариант должен объяснять механизм, а не только совпадать с одним запуском.
Вопрос 1 из 20
Проследите выполнение TypedPointer: как объявление `PInteger = ^Integer` определяет смысл `P^ := 42`, и что происходит с `Alias` после `Dispose(P)`?
PascalDelphi / Pascal · Типизированные указатели
// Проследите фактическое поведение TypedPointer.
program TypedPointer;
{$APPTYPE CONSOLE}
type
  PInteger = ^Integer;
var
  P, Alias: PInteger;
begin
  New(P);
  P^ := 42;
  Alias := P;
  Dispose(P);
  P := nil;
  Writeln(Alias^);
end.
Вопрос 2 из 20
В практическом сценарии по теме «Сырая динамическая память» меняются входные данные и порядок действий. Какой вывод остаётся корректным?
Вопрос 3 из 20
Две реализации темы «Типизированное выделение памяти» совпадают на обычном примере. Какое различие всё же меняет их договор?
Вопрос 4 из 20
В практическом сценарии по теме «Висячие указатели» меняются входные данные и порядок действий. Какой вывод остаётся корректным?
Вопрос 5 из 20
Реализацию темы «Типизированные указатели» заменяют без изменения интерфейса. Какое наблюдаемое свойство обязано сохраниться?
Вопрос 6 из 20
Обычный пример по теме «Сырая динамическая память» проходит, но после изменения состояния возникает дефект. Какое условие объясняет его источник?
Вопрос 7 из 20
Реализацию темы «Типизированное выделение памяти» заменяют без изменения интерфейса. Какое наблюдаемое свойство обязано сохраниться?
Вопрос 8 из 20
В теме «Висячие указатели» есть две независимые границы поведения. Какой внешний договор не смешивает их в одно расплывчатое правило?
Вопрос 9 из 20
Какой сценарий по теме «Типизированные указатели» отличит исправную реализацию от версии со скрытым дефектом?
Вопрос 10 из 20
Правка по теме «Сырая динамическая память» должна сохранить полезное поведение и убрать риск на соседнем сценарии. Какое требование она обязана выполнить?
Вопрос 11 из 20
В теме «Типизированное выделение памяти» есть две независимые границы поведения. Какой внешний договор не смешивает их в одно расплывчатое правило?
Вопрос 12 из 20
Почему вызов `Inc(Second^.Value)` после `Dispose(First)` недопустим, хотя переменная `Second` всё ещё содержит ненулевой адрес?
PascalDelphi / Pascal · Висячие указатели
// Отделите правило языка от удачного запуска DanglingAliases.
program DanglingAliases;
{$APPTYPE CONSOLE}
type
  PNode = ^TNode;
  TNode = record
    Value: Integer;
  end;
var
  First, Second: PNode;
begin
  New(First);
  First^.Value := 8;
  Second := First;
  Dispose(First);
  First := nil;
  Inc(Second^.Value);
end.
Вопрос 13 из 20
Модуль, использующий тему «Типизированные указатели», передают другой команде. Какую ответственность нужно закрепить во внешнем договоре?
Вопрос 14 из 20
В теме «Сырая динамическая память» есть две независимые границы поведения. Какой внешний договор не смешивает их в одно расплывчатое правило?
Вопрос 15 из 20
Какая пара операций в `NewDispose` создаёт и затем завершает время жизни значения `TNode`, включая его управляемое поле `Name`?
PascalDelphi / Pascal · Типизированное выделение памяти
// Отделите правило языка от удачного запуска NewDispose.
program NewDispose;
{$APPTYPE CONSOLE}
type
  TItem = record
    Name: string;
    Values: array of Integer;
  end;
var
  P: ^TItem;
begin
  New(P);
  try
    P^.Name := 'safe';
    P^.Values := [1, 2, 3];
  finally
    Dispose(P);
  end;
end.
Вопрос 16 из 20
Какой сценарий по теме «Висячие указатели» отличит исправную реализацию от версии со скрытым дефектом?
Вопрос 17 из 20
Для темы «Типизированные указатели» обычный путь и граничный путь дают разные риски. Какой вывод учитывает оба, не подменяя один другим?
Вопрос 18 из 20
Какое наблюдение должен зафиксировать тест именно для последовательности `P^.Name := 'unsafe';` → `FreeMem(P);` в `RawMemory`?
PascalDelphi / Pascal · Сырая динамическая память
// Проследите фактическое поведение RawMemory.
program RawMemory;
{$APPTYPE CONSOLE}
uses System.SysUtils;
type
  TItem = record
    Name: string;
    Count: Integer;
  end;
var
  P: ^TItem;
begin
  GetMem(P, SizeOf(TItem));
  try
    P^.Name := 'unsafe';
    P^.Count := 3;
  finally
    FreeMem(P);
  end;
end.
Вопрос 19 из 20
Какое свойство темы «Типизированное выделение памяти» становится решающим на граничном входе или при другом порядке действий?
Вопрос 20 из 20
Модуль, использующий тему «Висячие указатели», передают другой команде. Какую ответственность нужно закрепить во внешнем договоре?

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу