#c #memory #memory-management
Вопрос:
У меня есть изображение ниже и main
вызовы функций a = foo(12, 15, 18) ;
На изображении ниже, является ли рамка в main
основном для всего стека? И рамка для foo()
-это место, где хранится регистр EBP main
, пока он не сохранит регистры?
Кроме того, будет ли выделена область памяти для переменной a
?
Комментарии:
1.
is the frame for main basically the whole of stack?
— нет,main
это такая же функция, как и любая другая, за исключением того, что она вызывается логикой запуска процесса в O/S. Независимо от того, принадлежат ли аргументы, переданные функции, к стеку вызывающего абонента или вызываемого абонента, в глазах наблюдателя. И будет ли выделена область стекаa
, зависит от того, для чего она будет использоваться после назначения (а также от настроек компилятора).2. Хорошо, спасибо, что если a используется для умножения на константу?
3. Это будет зависеть от контекста. Попробуйте сами, например, на godbolt .