LINUX.ORG.RU

Вопрос на geekbrains про программный стэк.

 ,


0

1

Проверять щас неохото, но я знаю точно из этих вопросов то, что ответ один из них правильный - программный стек содержит значения, передаваемые фукнциям при их вызове. Это наверное утверждение. Но может быть ещё переменная с автоматической продолжительностью хранения, так как для этого стек тоже подходит. Всё ли правильно? Вот вопросы.
Верны ли следующие утверждения:

  • Программный стек содержит локальные переменные с автоматической продолжительностью хранения.
  • Программный стек содержит значения, передаваемые функциям при их вызове.
  • Программный стек содержит глобальные переменные.
  • Программный стек содержит массивы переменной длины ( VLA, язык C99).
  • Программный стек содержит локальные переменные со статической продолжительностью хранения.

Перемещено beastie из general

локальные переменные с автоматической продолжительностью хранения.

обычно да

передаваемые функциям при их вызове.

it depends. Зависит от calling convention. Иногда через регистры (linux), на других платформах через стек (*bsd).

глобальные переменные.

нет, в heap/data

массивы переменной длины ( VLA, язык C99).

it depends, обычно stack (gcc), но может быть и heap

локальные переменные со статической продолжительностью хранения.

нет, в heap

beastie ★★★★★
()

Программный стек содержит локальные переменные с автоматической продолжительностью хранения.

true

Программный стек содержит значения, передаваемые функциям при их вызове.

Зависит от ABI.

Программный стек содержит массивы переменной длины ( VLA, язык C99).

Ну не в куче же им быть? Верно, по идее...

Nietzsche
()
Ответ на: комментарий от beastie

it depends. Зависит от calling convention. Иногда через регистры (linux)

Регистры ограничены. Утвеерждение верно.

anonymous
()
Ответ на: комментарий от anonymous

Регистры ограничены. Утвеерждение верно.

При смешанном использовании (как в lnx: пока помещается — в регистрые, остаток в стек) утверждение спорно. К тому же (not) all the world is i386. Бывают архитектуры с большой толпой регистров (arm, etc...).

beastie ★★★★★
()

Тонкостей им явно не надо, так что ответы: Да Да Нет Да Нет

lovesan ★★★
()

Да Да Нет Да

И «нет» на последний вопрос

anonymous
()
Ответ на: комментарий от beastie

нет, в heap/data

При каких обстоятельствах глобальные переменные хранятся в куче?

нет, в heap

Разве локальные переменные, объявлённые со static, не хранятся там же, где и глобальные переменные?

Deleted
()

«Автоматическая продолжительность хранения»

«Статическая продолжительность хранения»

Необычная терминология.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.