警告 C26406
(r.3) に生ポインターを
owner<T>
割り当てないでください
この警告は、C++ Core Guidelines の R.3 を適用します。 詳細については、「C++ Core Guidelines R.3」を参照してください。
解説
所有者は、割り当てまたは他の所有者から初期化されます。 この警告は、生ポインターから所有者ポインターに値を代入したときに発生します。 生ポインターは所有権の譲渡を保証しません。元の所有者は引き続きリソースを保持し、解放を試みる場合があります。 所有者から生ポインターに値を代入することはできます。 生ポインターは、リソースにアクセスするための有効なクライアントですが、リソースを管理することはできません。
コード分析名: DONT_ASSIGN_RAW_TO_OWNER
例
オブジェクトのアドレスの使用:
このサンプルでは、defaultSocket
のアドレスの所有権を所有者ポインター socket
に割り当てようとします。
gsl::owner<Socket*> socket = defaultSocket ? &defaultSocket : new Socket(); // C26406