﻿# V514\. Potential logical error\. Size of a pointer is divided by another value\.

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

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

```cpp
const size_t StrLen = 16;
LPTSTR dest = new TCHAR[StrLen];
TCHAR src[StrLen] = _T("string for V514");
_tcsncpy(dest, src, sizeof(dest)/sizeof(dest[0]));
```

В выражении "sizeof\(dest\)/sizeof\(dest\[0\]\)" происходит деление размера указателя на размер элемента, на который ссылается указатель\. В результате мы можем получить различное количество скопированных байтов в зависимости от размера указателя и типа TCHAR, но не то количество, что планировал программист\.

С учетом того, что функция \_tcsncpy сама по себе не является безопасный, корректный и более безопасный код может выглядеть следующим образом:

```cpp
const size_t StrLen = 16;
LPTSTR dest = new TCHAR[StrLen];
TCHAR src[StrLen] = _T("string for V514");
_tcsncpy_s(dest, StrLen, src, StrLen);
```