まず、std::weak_ptr
の典型的な実装は何ですか?特にstd::weak_ptr
は、std::shared_ptr
の制御ブロックへのポインタにすぎませんか?memcpy std :: weak_ptr?
std::shared_ptr
の参照がすべて消えた場合、内部コントロールブロックは削除されますか?もしそうなら、std::weak_ptr::expired()
は、そのメモリが再利用されていると、どのように正しく機能しますか?
私はstd::weak_ptr
を含むオブジェクトを持っている、と私は後で処理するためのバッファにオブジェクトをmemcpy
たい。スマートポインタの内部動作を何らかの方法で破るつもりですか?
http://en.cppreference.com/w/cpp/types/is_trivially_copyable#Notes。 ['std :: weak_ptr'](http://en.cppreference.com/w/cpp/memory/weak_ptr/weak_ptr)は、正しく読めば、重大なコンストラクタを持っています。 – Justin
@Justin非自明なコンストラクタの存在は問題ではなく、ほんの些細なコピーまたは移動コンストラクタの存在のみです。ただし、 'weak_ptr'をコピーするとコントロールブロックを変更する必要があるため、実装では簡単な' std :: weak_ptr'コピーコンストラクタを使用することは不可能です。 –
"_particularly std :: weak_ptr std :: shared_ptr_の制御ブロックへのポインタ"ではなく "**"が含まれています** – curiousguy