Размер кадра стека в Linux – всегда ли он статичен?Linux

Ответить
Anonymous
 Размер кадра стека в Linux – всегда ли он статичен?

Сообщение Anonymous »


Чтобы сделать вопрос более конкретным, рассмотрим приведенный ниже пример (допустим, я отключил всю оптимизацию, чтобы мои фиктивные функции не были оптимизированы):

#include void func0 () { int32_t a = 0; } void func1() { int32_t a = 0, b = 1, c = 2, d = 3, e = 4; } void func2() { int32_t a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; } int main(void) { функция0(); функция1(); функция2(); вернуть 0; } У меня есть три функции: func1/func2/func3, и переменные, определенные внутри них, занимают разный объем памяти (т. е. func1 использует 4 байта, func2 использует 20 байтов и func3 использует 40 байтов).

Мой вопрос: для одного вызова функции моя программа всегда использует объем памяти, эквивалентный размеру кадра стека, независимо от фактического пространства, необходимого для переменной?

Иными словами, для того, чтобы программа вызывала func1, func2 или func3, она будет использовать одинаковое количество память?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»