Общий размер локальных переменных в функции с учетом вложенных областей плюс максимальное использование стека вызываемыми пользователями
Эта метрика отображается только в анализе проверки кода.
Эта метрика обеспечивает оптимистическую оценку использования стека функцией. В отличие от метрики Maximum Stack Usage, эта метрика учитывает вложенные области. Например, если переменные определены в двух взаимоисключающих ветвях условного оператора, метрика считает, что пространство стека, выделенное переменным в одной ветви, может быть повторно использовано в другой ветви.
Метрика представляет собой сумму этих размеров в байтах:
Максимальное значение из использования стека вызываемых функций. В вычислениях используется минимальное использование стека для каждого вызываемого абонента.
Например, в этом примере минимальное использование стека 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