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