﻿# V808\. An array/object was declared but was not utilized\.

Анализатор обнаружил код, который можно упростить\. В коде функции присутствуют локальные переменные, которые нигде не используются\.

Анализатор выдает предупреждение в следующих случаях:

1. Создается, но не используется массив объектов\. Это значит, что функция использует больше стековой памяти, чем необходимо\. Во\-первых, это может способствовать ситуации, когда произойдет переполнение стека\. Во\-вторых, это может снизить эффективность работы кэша в микропроцессоре\.
1. Создаются, но не используются объекты классов\. Анализатор предупреждает не обо всех объектах, а о тех, которые гарантированно нет смысла создавать и при этом не использовать\. Например, std::string или CString\. Создание и уничтожение таких объектов пустая трата процессорного времени и стека\.

Анализатор не выдаёт предупреждения, если создаются переменные простых типов\. С этим хорошо справляется компилятор\. Также это помогает избежать множества ложных срабатываний\.

Рассмотрим пример:

```cpp
void Foo()
{
  int A[100];
  string B[100];
  DoSomething(A);
}
```

Массив элементов типа 'string' объявлен, но не используется\. Под массив выделяется память, вызываются конструкторы и деструкторы\. Для оптимизации достаточно просто удалить объявление неиспользуемой локальной переменной или массива\. Пример корректного кода: 

```cpp
void Foo()
{
  int A[100];
  DoSomething(A);
}
```