Поделиться через


Предупреждение C26405

Не назначайте допустимому owner<T> состоянию (r.3)

Замечания

Если указатель владельца уже указывает на допустимый буфер памяти, он не должен быть назначен другому значению, не освобождая текущий ресурс первым. Такое назначение может привести к утечке ресурсов, даже если адрес ресурса копируется в какой-то необработанный указатель (так как необработанные указатели не должны выпускать ресурсы). Дополнительные сведения см. в основных рекомендациях по C++ .

Имя анализа кода: DONT_ASSIGN_TO_VALID

Пример 1

Перезапись владельца в цикле:

gsl::owner<Shape*> shape = nullptr;
while (shape = NextShape()) // C26405
    Process(shape) ? delete shape : 0;