💡 Инструкция: В каждом вопросе выберите один ответ из пяти. На весь тест отведено 85 минут. Код лучше сначала разобрать вручную: правильный вариант должен объяснять механизм, а не только совпадать с одним запуском.
Вопрос 15 из 30
Для темы «Утечка ресурса» обычный путь и граничный путь дают разные риски. Какой вывод учитывает оба, не подменяя один другим?
Граница определяется только первым условием: утечку ресурса ищут по конкретному виду: память, handle, GDI-объект, сокет или поток; второе не проверяется.
Граница определяется только вторым условием: общий рост процесса без разбиения не показывает владельца; первое не учитывается.
Первую границу заменяют предположением «Рост рабочего набора сам показывает утечку управляемой памяти Delphi», сохраняя лишь вторую.
Оба условия заменяют предположениями «Рост рабочего набора сам показывает утечку управляемой памяти Delphi» и «Общий график памяти процесса показывает источник утечки без разделения handle, GDI, сокетов и потоков».
На граничном пути нужно учитывать оба условия: утечку ресурса ищут по конкретному виду: память, handle, GDI-объект, сокет или поток; одновременно общий рост процесса без разбиения не показывает владельца.
Вопрос 20 из 30
В теме «Ошибки доступа к памяти» есть две независимые границы поведения. Какой внешний договор не смешивает их в одно расплывчатое правило?
Во внешний договор включают только первое свойство: access violation сообщает о недопустимом адресе, но причина часто возникла раньше; второе оставляют неявным.
Внешний договор должен раздельно учитывать, что access violation сообщает о недопустимом адресе, но причина часто возникла раньше, и что уничтоженный объект, выход за границу, гонка или повреждение стека требуют восстановления цепочки владения.
Первую границу заменяют предположением «Нулевой адрес указывает на пропущенный `Create`, поэтому другие причины можно не рассматривать», сохраняя только вторую.
Обе границы заменяют предположениями «Нулевой адрес указывает на пропущенный `Create`, поэтому другие причины можно не рассматривать» и «Нулевой адрес указывает на пропущенный `Create`, поэтому другие причины можно не рассматривать».
Во внешний договор включают только второе свойство: уничтоженный объект, выход за границу, гонка или повреждение стека требуют восстановления цепочки владения; первое считают внутренней деталью.
Вопрос 21 из 30
В `ResourceLeakKinds` сначала встречается `Bitmap := TBitmap.Create;`, а затем `Writeln(GetGuiResources(GetCurrentProcess, GR_GDIOBJECTS));`. Какое наблюдаемое следствие относится именно к сценарию ResourceLeakKinds?
Pascal Delphi / Pascal · Утечка ресурса Копировать
// Отделите правило языка от удачного запуска ResourceLeakKinds.
program ResourceLeakKinds;
uses Winapi.Windows, Vcl.Graphics;
var Brush: HBRUSH; Bitmap: TBitmap;
begin
Brush := CreateSolidBrush(RGB(10, 20, 30));
Bitmap := TBitmap.Create;
Writeln(GetGuiResources(GetCurrentProcess, GR_GDIOBJECTS));
end.
Утечку ресурса ищут по конкретному виду: память, handle, GDI-объект, сокет или поток.
Общий график памяти процесса показывает источник утечки без разделения handle, GDI, сокетов и потоков.
Рост рабочего набора процесса сам определяет, что течёт именно управляемая память Delphi.
Рост рабочего набора сам показывает утечку управляемой памяти Delphi.
Все ресурсы ОС отражаются в отчёте менеджера памяти одним способом.