﻿# V697\. Number of elements in the allocated array equals the size of a pointer in bytes\.

Количество элементов в массиве, выделяемого с помощью оператора 'new' равно размеру указателя в байтах\. Это очень подозрительный участок кода\.

Рассмотрим пример, как в программе может появиться такой код\. В начале, в программе был фиксированный массив, состоящий из байт\. Необходимо создать массив такого\-же размера, но из элементов float\. В результате был написан следующий код:

```cpp
void Foo()
{
  char A[10];
  ....
  float *B = new float[sizeof(A)];
  ....
}
```

Оставим в стороне качество этого кода\. Главное, что в процессе рефакторинга, массив 'A' стал тоже динамическим\. Фрагмент, где создаётся массив 'B' изменить забыли\. В результате, появляется следующий некорректный код:

```cpp
void Foo(size_t n)
{
  char *A = new char[n];
  ....
  float *B = new float[sizeof(A)];
  ....
}
```

Количество элементов в массиве 'B' равно 4 или 8, в зависимости от разрядности платформы\. Именно эту ситуацию и выявит анализатор кода\.

Исправленный вариант кода:

```cpp
void Foo(size_t n)
{
  char *A = new char[n];
  ....
  float *B = new float[n];
  ....
}
```