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

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
191
(2): (アウアウウー Sadd-g1CP) 2023/06/14(水)14:16 ID:iWYHYN4ra(3/3) AAS
reset()は違うと思う
192
(1): (ワッチョイ 01da-EP1b) 2023/06/14(水)14:26 ID:HNZbb8Sq0(1) AAS
>>189
その場合はメモリアクセス領域が変わるのでswapする前に取得済みだったイテレータは再取得する必要あり
193: (ワッチョイ e95f-2rqm) 2023/06/14(水)15:52 ID:K9MvWtl90(1/2) AAS
>186 が何を言ってるのか意味不明でこわい。
194
(1): (ワッチョイ e95f-2rqm) 2023/06/14(水)15:54 ID:K9MvWtl90(2/2) AAS
>>191
「reset() すれば確保していた分のメモリを捨てられる」で間違いないでしょ。
195
(2): (テテンテンテン MMeb-jufV) 2023/06/14(水)18:26 ID:9LyNOs9uM(1) AAS
>>190
resetする必要は無いよ。

コンテナから普通に要素を削除すれば、後はコンテナクラスがよろしくやってくれる。効率は実装次第だけど。
196
(1): (ワッチョイ 219b-q0yD) 2023/06/14(水)18:51 ID:0kIiqVrM0(2/2) AAS
>>195
コンテナクラスがよろしくやってくれるのに任せるのであれば、スマートポインタで持たずに単にコンテナとして持つのと変わらないように思うのですが、違うのでしょうか。
ちゃんと理解していなかったら申し訳ありません。
197
(1): (ワッチョイ d17c-sLM4) 2023/06/14(水)18:58 ID:vjajEcDc0(1) AAS
vectorを信頼するなら単にclear()してshrink_to_fit()すればいい
信用できないならスマポで持っといていらなくなったら手動でブチ消せばいい
それすら信用できないならイチから自分で作れ
お前がどれだけ心配消化による
198
(1): (テテンテンテン MMeb-jufV) 2023/06/14(水)19:18 ID:YeSwNDrrM(1) AAS
>>196
どのコンテナを使うかによる。

vectorとかdequeはまだ確保していない要素用の領域をしばしば予約するから、>>182のような状況を回避するのは面倒臭い。

listとかmapは(これも実装次第だけど)まだ確保していない要素のための領域を予約したりしないから、他のデメリットを許容するなら>>182対策の選択肢になる可能性はある。

いずれにしても、そこまで気にするならまずベンチマークを取って実態を調査すべきだし、そもそも巨大なメモリを頻繁に確保・解放するのは設計に問題があることが多いから、メモリを解放しないで済む方法を検討してみる。
199
(2): (ワッチョイ 219b-q0yD) 2023/06/15(木)03:20 ID:J1cG0ikp0(1/3) AAS
>>198
そもそもvectorのスマートポインタ (あるいはより一般的にサイズが動的なクラスのスマートポインタ) を作り、そのvectorやクラスのサイズを変えたときって確保されてる領域のサイズも変わるんでしたっけ?
手動で変えなきゃいけないと思っていました
(また、vectorのポインタとvectorの先頭要素のポインタは意味が違うのでよりわけが分からなくなりました)
200
(1): (ワッチョイ d17c-sLM4) 2023/06/15(木)06:50 ID:usfnoco+0(1/2) AAS
std::vectorはshrink_to_fit()呼ばない限り勝手にcapacity縮めたりしないはずだけど
201
(1): (ワッチョイ d19c-jufV) 2023/06/15(木)08:48 ID:hMmgKiSo0(1) AAS
>>199
コンテナ内のポインタの予約は避けられないよ。

ただ、ポインタのサイズを気にするようなシビアな状況なら、そもそもc++じゃなくてcで実装することを検討すべき。
202: (ワッチョイ b96e-ofsu) 2023/06/15(木)09:00 ID:K4jCDX8M0(1) AAS
シビアな状況でC++が使えないやつがCならOKなはずはない
203
(1): (アウアウウー Sadd-g1CP) 2023/06/15(木)10:11 ID:dLjlwX4ma(1) AAS
>>199
何が判ってないのかが判ってないパターンだな
まともな解答もらってても何が正しいのか(なぜ正しいのか)
すら判断出来なさそうなレベル
解答者に失礼
204
(1): (ワイーワ2 FF63-pDI4) 2023/06/15(木)10:56 ID:kyFBXozFF(1) AAS
他所スレで同じ様な流れが

>742
質問の仕方が悪いだけwww
欲しい情報を引き出すには一定以上の質問能力が必要

>743
質問の仕方が重要なのはその通りだけど
ここで問題にしてるのは自分が詳しくない領域では質問の仕方が悪かったかどうかも分からないってことでしょうよ

>744
>>742
質問のしかたさえ良ければ正確な情報が手に入ると思ってるのは素人だけだぞ?w
205
(1): (ワッチョイ 219b-q0yD) 2023/06/15(木)12:02 ID:J1cG0ikp0(2/3) AAS
>>201
いや、ポインタのサイズなんて全く気にしてない。
質問は、メモリの解放をコンテナに任せるならわざわざスマポで持つ意味ないよね? ってこと。
で、コンテナに任せるというのは元の質問(>>182)への回答に全くなってないよね? ってこと。
(その理由は>>184,200様の書いてくださってる通り)
つーかお前が何も分かってないのは>>195でreset()しなくて良いとかほざいてる時点でお察し。

>>203-204

>>203>>191で「reset()しなくても良い」とかほざいてて>>195と同レベ。

>>183-185,194,197,200
省2
206
(1): (テテンテンテン MMeb-jufV) 2023/06/15(木)12:29 ID:QcI//Xn+M(1) AAS
>>205
コンテナのsmart ptrの扱いは調べた?
コンテナの要素とポインタの参照先の違いについて根本的な誤解がありそう。

vectorはまだ構築していないインスタンス用のメモリ領域を予約するけど、smart ptrはそんなことしないよ。
vector<smart ptr>もsmart ptr の予約はするけど、smart ptrの参照先インスタンスの予約はしない。
207
(1): (ワッチョイ 219b-q0yD) 2023/06/15(木)13:15 ID:J1cG0ikp0(3/3) AAS
>>206
だから、結局任意のコンテナ、クラスに対してスコープ内でメモリを解放する方法は?
new で生ポを持って delete するか、スマポを持って reset するかだろ?

> vectorはまだ構築していないインスタンス用のメモリ領域を予約するけど、smart ptrはそんなことしないよ。
そりゃそう。
ゆえに、メモリを間違いなくリリースしたいなら reset すればよいのですねと>>190で述べている。
それで終わりなのにお前と来たら reset は不要だの元のコンテナの挙動に任せるだの、論旨を全く理解してないとんでもレスばっかり。

> vector<smart ptr>も……
論外。
誰もスマポのvectorの話なんてしてねえ。
208: (ワッチョイ 8bfb-Xx8j) 2023/06/15(木)14:56 ID:M9bt3STi0(1) AAS
186でも言ってるがstaticもしくはvirtualでデストラクタ使えよ
それがシンプルで高速で1行も無駄のない設計な
209: (ワッチョイ 01c9-6bUV) 2023/06/15(木)15:01 ID:B8g22vaD0(1) AAS
182の
>最も簡単なやり方は関数とか局所的なスコープとして切り出すことかと思いますが
がコンストラクタで確保してデストラクタで消す話というのはわかってる上で

>他に、オブジェクトに割り当てられているメモリを手動で解放する方法があったら教えてください。
なんじゃないの?

そんなものは無いっていう答えもあるにはあるけどサ
210: (ワッチョイ 13f0-8sUu) 2023/06/15(木)18:41 ID:QIwD56Ju0(1) AAS
最近IPP触り始めたんですが全部飽和演算で面食らってます
Modulo関数は無いんですか?
1-
あと 792 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.014s