警告 C26405

请勿分配给可能处于有效状态的 owner<T> (r.3)

注解

如果所有者指针已指向有效的内存缓冲区,则不得在未释放其当前资源的情况下为其赋予其他的值。 即使将资源地址复制到某些原始指针(原始指针应不会释放资源),这种分配依然可能导致资源泄漏。 有关详细信息,请参阅 C++ Core Guidelines

代码分析名称:DONT_ASSIGN_TO_VALID

示例 1

覆盖循环中的所有者:

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