-2
は、私は次のコード例では、共有のポインタについての基本的な疑問を持っている:共有ポインタを演算子=に置き換えてメモリリークを引き起こしますか?
int main() {
std::shared_ptr<int> sp; // empty
std::shared_ptr<int> sp2;
sp.reset (new int);
sp2.reset (new int);
*sp=10;
*sp2=400;
sp2=sp;
std::shared_ptr<int> sp3;
sp3=sp1;
//what happens with the int of value 400?
//more code
}
値400の整数で何が起こりますか?これはメモリリークですか?これは基本的な例ですが、intの代わりにポインタが大きなクラスを指していた場合、メモリリークがあった場合には問題があり、sp2が何度も再割り当てされると問題が発生します。感謝! ありがとう!
'* sp = 10'と書いていますか?あなたが 'sp = std :: make_shared(10);'を意味するのであれば、もっと意味があります。 –
yea申し訳ありませんが、それらの行を忘れてしまいました –
もちろん、リークはありません。 'sp2'は400を含むintの唯一の所有者なので、 'sp2'が' sp'が所有するメモリの共有所有権を得る前に破棄されます。 – Praetorian