[過去ログ]
C++相談室 part164 (1002レス)
C++相談室 part164 http://mevius.5ch.net/test/read.cgi/tech/1683600652/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
182: デフォルトの名無しさん (ワッチョイ b16b-q0yD) [sage] 2023/06/14(水) 08:43:22.06 ID:/jeWb7sY0 あとメモリに関連した質問で、例えばめちゃデカい std::vector を要素数 1 に resize しても capacity はめちゃデカいままですよね? STL コンテナ以外にも、大きいメモリが割り当てられてるオブジェクトを使用後に破棄したいというケースがよくあります。 最も簡単なやり方は関数とか局所的なスコープとして切り出すことかと思いますが、他に、オブジェクトに割り当てられているメモリを手動で解放する方法があったら教えてください。 http://mevius.5ch.net/test/read.cgi/tech/1683600652/182
184: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c13e-2rqm) [sage] 2023/06/14(水) 09:19:31.16 ID:O3itrano0 >>182 そのために shrink_to_fit がある。 詳細は実装依存なので何もしない関数であっても仕様に反しないけど 常識的には各実行環境で効率的に動くように実装されるので まずは試してみても損はないと思う。 アロケータを自作してもあまり制御できないんよね。 アロケーションが必要になったらコンテナからアロケータが呼ばれるという 受動的な構造なのでコンテナによるメモリ管理戦略にそれほど関与できるわけではない。 本当にどうしても標準ライブラリの挙動の詳細が不満なら 自分で同等のものを実装する (または望ましいものをどこかから見つける) しかないよ。 http://mevius.5ch.net/test/read.cgi/tech/1683600652/184
185: デフォルトの名無しさん (アウアウウー Sadd-g1CP) [sage] 2023/06/14(水) 10:15:22.04 ID:iWYHYN4ra >>182 new で造って delete (または delete []) で解放 http://mevius.5ch.net/test/read.cgi/tech/1683600652/185
187: デフォルトの名無しさん (テテンテンテン MMeb-jufV) [sage] 2023/06/14(水) 12:29:45.65 ID:XEzvAdInM >>182 >>185とほとんど同じだけどunique ptrで管理。 ヒープの確保時間が問題になるならアロケーター使ってヒープを予約する。 http://mevius.5ch.net/test/read.cgi/tech/1683600652/187
188: デフォルトの名無しさん (ワッチョイ d9f0-EP1b) [sage] 2023/06/14(水) 13:12:37.90 ID:9CAXVpD30 >>182 vector<空にしたいオブジェの要素の型>().swap(空にしたいオブジェ) http://mevius.5ch.net/test/read.cgi/tech/1683600652/188
198: デフォルトの名無しさん (テテンテンテン MMeb-jufV) [sage] 2023/06/14(水) 19:18:20.42 ID:YeSwNDrrM >>196 どのコンテナを使うかによる。 vectorとかdequeはまだ確保していない要素用の領域をしばしば予約するから、>>182のような状況を回避するのは面倒臭い。 listとかmapは(これも実装次第だけど)まだ確保していない要素のための領域を予約したりしないから、他のデメリットを許容するなら>>182対策の選択肢になる可能性はある。 いずれにしても、そこまで気にするならまずベンチマークを取って実態を調査すべきだし、そもそも巨大なメモリを頻繁に確保・解放するのは設計に問題があることが多いから、メモリを解放しないで済む方法を検討してみる。 http://mevius.5ch.net/test/read.cgi/tech/1683600652/198
205: デフォルトの名無しさん (ワッチョイ 219b-q0yD) [sage] 2023/06/15(木) 12:02:49.40 ID:J1cG0ikp0 >>201 いや、ポインタのサイズなんて全く気にしてない。 質問は、メモリの解放をコンテナに任せるならわざわざスマポで持つ意味ないよね? ってこと。 で、コンテナに任せるというのは元の質問(>>182)への回答に全くなってないよね? ってこと。 (その理由は>>184,200様の書いてくださってる通り) つーかお前が何も分かってないのは>>195でreset()しなくて良いとかほざいてる時点でお察し。 >>203-204 笑 >>203は>>191で「reset()しなくても良い」とかほざいてて>>195と同レベ。 >>183-185,194,197,200様 ご丁寧な回答をくださりどうもありがとうございました。 勉強になります。 http://mevius.5ch.net/test/read.cgi/tech/1683600652/205
222: デフォルトの名無しさん (スフッ Sd33-pDI4) [] 2023/06/16(金) 15:49:19.69 ID:YNpYq5+wd >>182 良く読むと >STL コンテナ以外にも、大きいメモリが割り当てられてるオブジェクトを使用後に破棄したいというケースがよくあります。 >最も簡単なやり方は関数とか局所的なスコープとして切り出すことかと思いますが いやいやそもそも「関数とか局所的なスコープ(つまりautoだろ?stackだろ?)で大きいメモリ確保しようなんて思うな」って話なんだよな http://mevius.5ch.net/test/read.cgi/tech/1683600652/222
233: デフォルトの名無しさん (ワッチョイ d9ab-trtU) [sage] 2023/06/17(土) 19:29:36.10 ID:HtrmHz3i0 回答者のレベル低いな~~~ こんだけダラダラ続けて、結局質問者>>182が>>190で早々に結論づけてることをリピートしてるだけw http://mevius.5ch.net/test/read.cgi/tech/1683600652/233
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.796s*