2010-10-12 7 views

ответ

2

Они смешаны. Однако это зависит от реального языка программирования/компилятора. Я могу представить компилятор, выделяющий пространство для локальной переменной в куче и сохраняя указатель на хранилище в стеке.

В каждом процессе есть один стек на поток. Следовательно, например, процесс с 20 потоками имеет 20 независимых стеков.

0

Это зависит от компилятора, но архитектура x86 ориентирована на один стек из-за того, что команды push и pop работают с одним указателем стека. Компилятору придется выполнять больше работы, поддерживая несколько стеков.

2

Как уже указывали другие, это в основном единый смешанный стек. Я просто добавлю одну небольшую деталь: достаточно недавние процессоры также имеют небольшой кэш обратных адресов, который хранится в самом процессоре, и в нем хранятся только обратные адреса, а не другие данные. Это в основном невидимо за пределами более быстрого исполнения, хотя ...

0

На заметку: каждый поток в Win32 имеет свой собственный стек. Итак, когда вы говорите «Windows-программа» - это зависит от того, сколько потоков оно имеет. (Конечно, потоки создаются/выходят во время выполнения).

Смежные вопросы