Общий размер локальных переменных в функции с учетом вложенных областей плюс максимальное использование стека от callees
Эта метрика указывается только в анализе Code Prover.
Эта метрика обеспечивает оптимистическую оценку использования стека функцией. В отличие от метрического Maximum Stack Usage
, эта метрика учитывает вложенные возможности. Например, если переменные определены в двух взаимоисключающих ветвях условного оператора, метрика считает, что пространство стека, выделенное переменным в одной ветви, может быть повторно использовано в другой ветви.
Метрика является суммой этих размеров в байтах:
Максимальное значение из использования стека функций callees. В расчете используется минимальное использование стека каждой тележки.
Например, в этом примере минимальное использование стека func
совпадает с минимальным использованием стека func1
или func2
, в зависимости от того, что больше.
void func(void) { func1(); func2(); }
Если вызовы функций находятся в разных ветвях условного оператора, эта метрика рассматривает ветвь с наименьшим использованием стека.
Анализ делает оценку размера стека позже, когда он разрешил, какие вызовы функции на самом деле происходят. Например, если вызов функции происходит в недоступном коде, размер стека не учитывает вызов. Анализ также может учитывать вызовы через указатели на функцию.
Фактическое использование стека может отличаться от метрического значения.
Некоторые переменные хранятся в регистрах вместо в стеке.
Ваш компилятор выполняет переменный анализ жизни, чтобы включить определенную оптимизацию памяти. При оценке этой метрики Polyspace® не рассматривает эти оптимизации.
Ваш компилятор использует дополнительную память во время вызова функции. Например, компиляторы хранят адрес, на который возвращается выполнение после вызова функции. При оценке этой метрики Polyspace не рассматривает это скрытое использование памяти.
Однако метрика предоставляет разумную оценку использования стека.
Чтобы определить размеры основных типов, программное обеспечение использует ваши спецификации для Target processor type (-target)
. Метрика учитывает #pragma pack
директивы в вашем коде.
Группа: Функция |
Акроним:
MIN_STACK
|
ЕГО Метрика: Нет |
Calculate code metrics (-code-metrics)
| Lower Estimate of Local Variable Size
| Maximum Stack Usage
| Program Minimum Stack Usage