[過去ログ] C++相談室 part164 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
210: (ワッチョイ 13f0-8sUu) 2023/06/15(木)18:41 ID:QIwD56Ju0(1) AAS
最近IPP触り始めたんですが全部飽和演算で面食らってます
Modulo関数は無いんですか?
211
(2): (ワッチョイ fb8c-jufV) 2023/06/15(木)21:00 ID:W1C5TI4i0(1) AAS
>>207
ああ、ごめん。めっちゃデカイインスタンスのvectorじゃなくて、めっちゃデカイvectorね。
それなら実装依存だけど>184か、>192とか参照無効化の制限とかコピーコストとかあるけど>189。189はsmart ptrにしとけば実用上問題ないかね。vectorのイテレーターは保存するものじゃないし。
212
(1): (ワッチョイ c14e-8sUu) 2023/06/15(木)21:28 ID:3cvhbwG+0(1) AAS
実際の所、vectorならclear()→shrink_to_fit()でメモリが開放されないこってありうるの?
213: (ワッチョイ d17c-sLM4) 2023/06/15(木)22:10 ID:usfnoco+0(2/2) AAS
規格上はshrink_to_fit()にメモリ解放する義務はないし、実装定義で何やっても自由(capacityを増やすような真似だけは禁止)
shrink_to_fit()がなんにもしない実装でも一応規格準拠になる
そんな糞みたいな実装が実在するかは知らない
214: (US 0H0b-q0yD) 2023/06/16(金)02:13 ID:PZdB0bgSH(1) AAS
>>211
はい結局一人だけ違う話してた
ハァァ~~~~~(クソデカため息)
215
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ c13e-2rqm) 2023/06/16(金)11:31 ID:QEmhRLek0(1) AAS
>>212
基本的には効率的に実装されるものだと信じて良いと思うが
どういう実装が効率的であるかは実行環境の事情による。

たとえばメモリ管理がページ単位というのは普通のことだし
その場合にページ単位より細かく確保したり解放したりしても非効率になる。

常に何もしないというような実装はあまりないと思うけど
解放するほうが非効率だと考えられる状況では
shrink_to_fit を呼んでも解放しなかったり部分的にだけ解放する
ということはそれなりにあり得そうだと思うよ。
216
(1): (ワッチョイ 01c9-6bUV) 2023/06/16(金)12:08 ID:nWXjt7Za0(1) AAS
capacityと OS側からみた空きメモリはまた別かもしれんわけで
アロケーターがOSからじかに要求してる場合もあれば
OSへの要求回数を減らして内部でプールしてやりくりしてるのもあるし
制御したいレイヤーによっては全部自前でやるしかない という落ちにも
217: (ワッチョイ c14e-8sUu) 2023/06/16(金)12:26 ID:B2wRJ7jC0(1) AAS
>>215
まぁ、細かい単位のメモリだったら、実際に開放されているかどうかなんて、ほとんど動作に影響しないとも言えるしね
(未初期化変数の不具合が発覚しづらい、くらいか)
とりあえずshrink_to_fitを呼んでおいて、細かいことは気にしないのが一番かもしれないw
218: (ワッチョイ 934f-q0yD) 2023/06/16(金)12:46 ID:H6XPX5qB0(1) AAS
「STLコンテナ以外にも」という文言が読めてない文盲さんたちがvectorの話ばっかしててワロ
219: (ワッチョイ d969-2rqm) 2023/06/16(金)15:41 ID:KX+TErXo0(1) AAS
「STLコンテナ以外にも」はSTLコンテナも含むということ
STLコンテナの話をしても何もおかしくない
220: (アウアウウー Sadd-g1CP) 2023/06/16(金)15:43 ID:ly+Q1cW8a(1) AAS
いつものことだが
ほんの最初の数レスで終わってるのに
どうでも良い脱線ほど盛り上がってgdgdレスでスレが延びる
221: (アウアウウー Sadd-Xx8j) 2023/06/16(金)15:46 ID:/DJegtL/a(1) AAS
ほんそれ
回答終了してんのにちんこかゆい
222: (スフッ Sd33-pDI4) 2023/06/16(金)15:49 ID:YNpYq5+wd(1) AAS
>>182 良く読むと
>STL コンテナ以外にも、大きいメモリが割り当てられてるオブジェクトを使用後に破棄したいというケースがよくあります。
>最も簡単なやり方は関数とか局所的なスコープとして切り出すことかと思いますが

いやいやそもそも「関数とか局所的なスコープ(つまりautoだろ?stackだろ?)で大きいメモリ確保しようなんて思うな」って話なんだよな
223
(2): (ワッチョイ e95f-2rqm) 2023/06/16(金)16:09 ID:qgM8i0iT0(1) AAS
ローカルなvectorを置けばヒープ確保されるので「つまりautoだろ?stackだろ?」は
また何か誤解してる人が来たなとしか。
224
(1): (ワッチョイ 219b-q0yD) 2023/06/16(金)16:49 ID:ybGonaVE0(1) AAS
reset要らないとか言ってる奴らは結局何なん
225
(1): (テテンテンテン MMeb-jufV) 2023/06/16(金)19:32 ID:yx9ngvFiM(1) AAS
>>224
結論は>211にまとめといた。
resetは要らん。
226
(1): (ワッチョイ 92dc-gfWY) 2023/06/17(土)08:56 ID:3MnK6eEg0(1) AAS
>>223
「STLコンテナ以外にも」という文言が読めてない文盲さんたちがvectorの話ばっかしててωωω
227
(1): (テテンテンテン MM96-Axrn) 2023/06/17(土)10:36 ID:koF9X0k9M(1) AAS
>>226
「大きいメモリが割り当てられてるオブジェクトを使用後に破棄したい」なら
>185>187
>187はunique ptrの置き場所と解放タイミングによって解放の仕方が違って、自動変数にして関数やスコープから抜けるタイミングで解放するなら手動操作不要、vectorなどのヒープに置くとかスコープの終わり前に解放したいとかならreset()とかvectorの要素削除とかで手動解放。

いずれにしても、自動変数に巨大インスタンスを考え無しに置くのは悪手で、そのオブジェクトがスタックに巨大データを置かない(ヒープ等に置く)ことを確認してからにしたほうがいい。
228: (ワッチョイ 6128-l8k0) 2023/06/17(土)15:30 ID:S+64vkUJ0(1/4) AAS
>>216
vectorのcapacityはそのvectorが氏ぬかcapacity縮小アクションが生じない限りvector固有に占有されるから
capacity(のうちsize()を超える分)と OS側からみた空きメモリはまた別でケテーイ……
一方malloc()がOSからゲットしたメモリをOSに返さずにいるのはOS側からみた空きメモリではないにしろ
同一プロセス内の他のオブジェクトの構築に使えるのだから空きメモリのうち
これすらもOSに返したいということならこの流れの中で現状答えがでていないキモヌ
229: (ワッチョイ 6128-l8k0) 2023/06/17(土)15:31 ID:S+64vkUJ0(2/4) AAS
まあしいて言えばプロセスを一旦exitして再立ち上げ?
1-
あと 773 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.015s