💡 Инструкция: В каждом вопросе выберите один ответ из пяти. На весь тест отведено 85 минут. Код лучше сначала разобрать вручную: правильный вариант должен объяснять механизм, а не только совпадать с одним запуском.
Вопрос 15 из 30
Для темы «Утечка ресурса» обычный путь и граничный путь дают разные риски. Какой вывод учитывает оба, не подменяя один другим?
Граница определяется только вторым условием: общий рост процесса без разбиения не показывает владельца; первое не учитывается.
На граничном пути нужно учитывать оба условия: утечку ресурса ищут по конкретному виду: память, handle, GDI-объект, сокет или поток; одновременно общий рост процесса без разбиения не показывает владельца.
Оба условия заменяют предположениями «Рост рабочего набора сам показывает утечку управляемой памяти Delphi» и «Общий график памяти процесса показывает источник утечки без разделения handle, GDI, сокетов и потоков».
Граница определяется только первым условием: утечку ресурса ищут по конкретному виду: память, handle, GDI-объект, сокет или поток; второе не проверяется.
Первую границу заменяют предположением «Рост рабочего набора сам показывает утечку управляемой памяти Delphi», сохраняя лишь вторую.
Вопрос 20 из 30
В теме «Ошибки доступа к памяти» есть две независимые границы поведения. Какой внешний договор не смешивает их в одно расплывчатое правило?
Во внешний договор включают только второе свойство: уничтоженный объект, выход за границу, гонка или повреждение стека требуют восстановления цепочки владения; первое считают внутренней деталью.
Обе границы заменяют предположениями «Нулевой адрес указывает на пропущенный `Create`, поэтому другие причины можно не рассматривать» и «Нулевой адрес указывает на пропущенный `Create`, поэтому другие причины можно не рассматривать».
Во внешний договор включают только первое свойство: access violation сообщает о недопустимом адресе, но причина часто возникла раньше; второе оставляют неявным.
Внешний договор должен раздельно учитывать, что access violation сообщает о недопустимом адресе, но причина часто возникла раньше, и что уничтоженный объект, выход за границу, гонка или повреждение стека требуют восстановления цепочки владения.
Первую границу заменяют предположением «Нулевой адрес указывает на пропущенный `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.
Рост рабочего набора процесса сам определяет, что течёт именно управляемая память Delphi.
Утечку ресурса ищут по конкретному виду: память, handle, GDI-объект, сокет или поток.
Все ресурсы ОС отражаются в отчёте менеджера памяти одним способом.
Общий график памяти процесса показывает источник утечки без разделения handle, GDI, сокетов и потоков.
Рост рабочего набора сам показывает утечку управляемой памяти Delphi.