トップページ > プログラム > 2015年10月29日 > 90AKzuDc

書き込み順位&時間帯一覧

23 位/155 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000010100002



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
C++相談室 part120 [転載禁止]©2ch.net

書き込みレス一覧

C++相談室 part120 [転載禁止]©2ch.net
164 :デフォルトの名無しさん[sage]:2015/10/29(木) 17:03:20.53 ID:90AKzuDc
>>140-142
レス遅くなりました、すいません

>>139のブログで分からなかったのはコメントの以下の部分なのですが、

---------------------------------------
struct Object {
std::vector<std::string> vec;
};
のような Object に対しては,shared_ptr からの参照が破棄された時点で~Object() が呼ばれて, vec によって確保されたメモリは解放される
---------------------------------------

vecのメモリが解放されるのは、vectorが内部データをnewによりObjectのヒープとは別のヒープ上に持つからなんですね。

逆に、vectorみたいなコンテナじゃなくて、配列みたいなメンバの場合、
~Object() が呼ばれると破棄はされるもののメモリは解放されないということですね。

自己解決のつもりですが、以上の理解で正しいでしょうか?
C++相談室 part120 [転載禁止]©2ch.net
170 :デフォルトの名無しさん[sage]:2015/10/29(木) 19:04:10.54 ID:90AKzuDc
>>165
すいません、newという言葉を使うのは不適切だったかもしれません
(vectorが内部データを作るときにnewを使ってるのではと想像したからでした)
Objectのデストラクタがメンバvectorを破棄し、その際vectorのデストラクタが呼ばれ、vector内のデータが破棄&メモリ解放されることは理解してます

回答くださった方ありがとうございました


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。