質問: インスタンス破棄時にメモリが解放されるようにしたい c++言語でプログラムを作成しています あるクラスでインスタンス生成時に動的にメモリを割り当てた後 インスタンスが破棄されるまでそれを使用し インスタンス破棄時に解放するにはどうしたらいいでしょうか デストラクタで解放処理を実装すると 明示的にデストラクタが呼ばれた際に解放されてしまい インスタンスが破棄されるまで使用できませんでした
回答: まず, 「明示的にデストラクタを呼び出したあとで『ふつう』に (= 『ふつうならデストラクタを実行するような方法』で) スコープ外に出る」のは未定義動作. で形のうえでは, 自動変数に対して明示的にデストラクタを呼び出したとしても placement new を使えばいけるような気はするけど, やったことないからなぁ... というか, 自動変数に明示的にデストラクタを呼び出すなんて, やろうと思ったことがないなぁ. 必要性も思い付かんし. そもそも, どうして「明示的にデストラクタを呼び出す」必要があるんでしょうか?