﻿# V1005\. The resource was acquired using 'X' function but was released using incompatible 'Y' function\.

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

Например, анализатор предупредит, если файл открыт с помощью функции 'fopen\_s', а закрыт с помощью функции 'CloseHandle'\.

Рассмотрим пример некорректного кода\.

```cpp
FILE* file = nullptr;
errno_t err = fopen_s(&file, "file.txt", "r");
...
CloseHandle(file);
```

Невозможно предсказать, к каким последствиям приведёт выполнение такого кода\. Возможно, функция 'CloseHandle' вернёт статус ошибки и в результате просто произойдёт утечка ресурса \(файл не будет закрыт\)\. Возможны и более серьезные последствия\. При некорректном вызове некоторых функций возникает неопределённое поведение, что влечёт непредсказуемые последствия, вплоть до аварийного завершения работы приложения\.

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

```cpp
FILE* file = nullptr;
errno_t err = fopen_s(&file, "file.txt", "r");
...
fclose(file);
```