[過去ログ] C++相談室 part164 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
506
(2): デフォルトの名無しさん (ワッチョイ 0928-rP6O) [sage] 2023/07/17(月) 23:46:35.71 ID:mG7BHGLy0(3/5) AAS
>>502
>GetObjが内部でnewされていると、この作りではいつかメモリ不足になってしまいます。
この懸念は普通の作りなら基本的に無用。基本的に問題無い

(1) Obj1という型がポインタやハンドルではなくクラスの場合:
objはwhile(1) { }のブロックの中で構築されるので
ループの終わりでデストラクタが呼ばれる(破棄される)から、
Device::GetObj()が真っ当な作りならnewしたポインタをObj1のインスタンスobjに引き渡し、
Obj1クラスが真っ当な作りならobjが破棄されるときに引き渡されたポインタをdeleteする(ように作る
からダングリングポインタは生じない(ようにできる

(2) Obj1という型がポインタやハンドルの場合
確保したポインタやハンドルはいずれクローズせねばならない。
ループが次の繰り返しに入る前に確実にクローズすればよい
508: デフォルトの名無しさん (ワッチョイ 0928-rP6O) [sage] 2023/07/17(月) 23:58:52.90 ID:mG7BHGLy0(5/5) AAS
訂正orz、
誤: ループの終わりでデストラクタが呼ばれる(破棄される)から、(>>506
正: ループが次の繰り返しに入る前かループを抜ける際にデストラクタが呼ばれる(破棄される)から
511
(1): 502 (ワッチョイ ae7a-CYkg) [sage] 2023/07/18(火) 00:38:24.79 ID:ibbV/iYr0(1) AAS
皆さんありがとう。
>>506
ブロックスコープは知りつつも、ループのブロックの場合はループ中は寿命が継続すると思っていました。
ループ時に毎度後始末されるなら安心です。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 2.805s*