﻿# V757\. It is possible that an incorrect variable is compared with null after type conversion using 'dynamic\_cast'\.

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

Анализатор заметил в коде следующую ситуацию\. Сначала указатель на базовый класс приводится к указателю на производный класс с помощью 'dynamic\_cast'\. А затем этот же указатель проверяется на значение 'nullptr', хотя в этом случае, скорее всего, предполагалось проверить на 'nullptr' указатель, полученный в результате приведения\.

Рассмотрим следующий пример\. Здесь возможна ситуация, когда указатель 'baseObj' не будет ссылаться на экземпляр класса 'Derived'\. В этом случае при вызове функции произойдёт разыменование нулевого указателя\. Анализатор выдаст предупреждение на этот код, указав две строки\. Первая строка \- это то место, где указатель проверяется на 'nullptr'\. Вторая строка \- это то место, где указатель на базовый класс приводится к указателю на производный класс\.

```cpp
Base *baseObj;
....
Derived *derivedObj = dynamic_cast<Derived *>(baseObj);
if (baseObj != nullptr)
{
    derivedObj->Func();
}
```

Скорее всего в этом примере перед использованием предполагалось проверить на 'nullptr' указатель, полученный в результате приведения\. Исправленный вариант кода:

```cpp
Base *baseObj;
....
Derived *derivedObj = dynamic_cast<Derived *>(baseObj)
if (derivedObj != null)
{
    derivedObj->Func();
}
```