<<
>>

Контрольные вопросы и упражнения

1. Предположим, что некий язык позволяет при объявлении локальных переменных задавать их начальные значения, как, например, в следующем объявлении на языке Ada

X: integer := 50;

которое инициализирует переменную X, присваивая ей значение 50.

Объясните два значения, которые может иметь эта инициализация в случаях:

■ если локальные переменные сохраняются в промежутках между обращениями к подпрограмме;

■ если локальные переменные уничтожаются между вызовами подпрограмм.

398

Глава 14. Управление подпрограммами

2. В языках Pascal и Ada допускается использовать указатели совместно с операцией new для создания новых объектов данных. Их применение приводит к генерации мусора во время выполнения программы. Объясните, в чем состоит причина этого явления и как минимизировать такую генерацию.

3. Возьмите какую-либо написанную вами программу на языке, который использует правила статической области видимости, и для каждой содержащейся в ней подпрограммы перечислите имена, входящие в ее среду:

■ локальных ссылок;

■ нелокальных ссылок;

■ глобальных ссылок и

■ предопределенных ссылок.

Затем решите обратную задачу: для имени, объявленного в каждой из этих сред ссылок, перечислите:

■ объявления подпрограмм в его статической области видимости;

■ активации подпрограмм в его динамической области видимости.

4. Рассмотрим следующую программу, написанную на языке, в котором используются правила статической области видимости:

Заполните следующую таблицу для каждого оператора writeln в предположении, что передача параметров осуществляется указанным способом.

Способ передачи параметров______________________ |____ ]____ к____ т

Язык Pascal, как записаны в программе

Все параметры передаются по ссылке

Все параметры передаются по значению

Все параметры передаются по значению-результату

Контрольные вопросы и упражнения

399

2. Операция выделения памяти malloc языка C часто реализуется как обращение к программе распределения памяти, встроенной в операционную систему.
Операционная система организует центральную кучу, используемую всеми программами, а операции malloc и free, вызываемые из С-программы, соответственно выделяют и освобождают память в этой центральной куче. Поскольку операция malloc требует обращения к операционной системе, этот процесс может занять много времени. Альтернативным вариантом реализации операции malloc является использование локальной кучи в адресном пространстве каждой программы. В таком случае использование этой операции обходится значительно дешевле. (Операция new в языке Pascal реализована таким же образом.) Предположим, ваша программа требует достаточно частого использования операции malloc для выделения небольших блоков памяти из кучи. Исследуйте вашу локальную реализацию C и определите, какова в этой реализации стоимость использования для указанных целей операции malloc.

<< | >>

Еще по теме Контрольные вопросы и упражнения:

  1. Контрольные вопросы
  2. Контрольные вопросы
  3. Контрольные вопросы
  4. Контрольные вопросы
  5. Контрольные вопросы
  6. Контрольные вопросы
  7. Контрольные вопросы
  8. Контрольные вопросы
  9. Контрольные вопросы
  10. Контрольные вопросы
  11. Контрольные вопросы
  12. Контрольные вопросы
  13. Контрольные вопросы
  14. Контрольные вопросы
  15. Контрольные вопросы
  16. Контрольные вопросы