Большой аргумент передается значением между функциями
Этот дефект происходит, когда большой входной параметр или возвращаемое значение передаются между функциями его значением.
Копия значением создает копию аргумента в теле функции. Если аргумент является большим, его копия израсходовала существенную часть стекового пространства, доступного для функции. Копия может также значительно увеличить время выполнения.
Специальные замечания для возвращаемых значений: В коде С, когда функция возвращается значением, возвращаемое значение копируется в вызывающую сторону. Поэтому этот дефект появляется на функциях, которые имеют большие возвращаемые значения. В Коде С++, если функциональное возвращаемое значение имеет тип класса при определенных обстоятельствах, стандарт позволяет компиляторам стараться не копировать возвращаемое значение (C++ 98: Разделите 12.8, Пункт 15; C++ 11: Разделите 12.8, Пункт 31). Большинство компиляторов не выполняет копию в таких случаях. Это поведение называется оптимизацией возвращаемого значения. В таких случаях Polyspace® Bug Finder™ не производит этот дефект, если большой объект возвращен значением.
Для переменных, больше, чем 64 байта, передайте значение указателем или ссылкой. Для структурированных переменных можно также осуществить рефакторинг тип переменной так, чтобы только некоторые члены были скопированы.
Если вы не хотите устранять проблему, добавьте комментарии в свой результат или код, чтобы избежать другого анализа. Смотрите Результаты Polyspace Адреса Через Исправления ошибок или Выравнивания.
Группа: Хорошая практика |
Язык: C | C++ |
Значение по умолчанию: 'off' |
Синтаксис командной строки: PASS_BY_VALUE |
Удар: низко |