次の方法で共有


警告 C26405

有効な状態である可能性がある (r.3) に割り当て owner<T> ないでください

解説

所有者ポインターが既に有効なメモリ バッファーを指している場合は、最初に現在のリソースを解放せずに、別の値に割り当てることはできません。 このような割り当ては、リソース アドレスが何らかの生ポインターにコピーされた場合でも、リソース リークにつながる可能性があります (生ポインターはリソースを解放してはならないためです)。 詳細については、「C++ Core Guidelines」を参照してください。

コード分析名: DONT_ASSIGN_TO_VALID

例 1

ループ内の所有者を上書きする:

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