exponenta event banner

Ошибки из функций утверждения или выделения памяти

Проблема

Polyspace ® использует собственную реализацию стандартных библиотечных функций для более эффективного анализа. При переопределении стандартной библиотечной функции и предоставлении тела функции в Polyspace анализ использует определение.

Однако для некоторых стандартных библиотечных функций Polyspace продолжает использовать собственные реализации, даже если переопределить функцию и предоставить тело функции. Функции включают: assert и функции выделения памяти, такие как malloc, calloc и alloca.

Появится следующее предупреждающее сообщение:

Body of routine "malloc" was discarded.

Причина

Эти функции имеют особое значение для анализа Polyspace, поэтому переопределять их нельзя. Например:

  • Polyspace осуществление malloc функция позволяет программе проверить, выделена ли память с помощью malloc освобождается позже.

  • Polyspace осуществление assert используется внутри для улучшения анализа.

Решение

Если вы не хотите использовать собственные переопределения, игнорируйте предупреждение. Результаты анализа основаны на реализациях Polyspace стандартной библиотечной функции, которые соответствуют исходным спецификациям функции.

Если требуется использовать собственные переопределения и вы уверены, что переопределенная функция ведет себя так же, как и исходная, переименуйте функции. Переименовать функцию можно только для целей анализа с помощью опции Preprocessor definitions (-D). Например, переименование функции malloc кому my_malloc, использовать malloc=my_malloc для аргумента параметра.