- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:クラスのメンバ変数のnew)
クラスのメンバ変数のnewについての例外処理とメモリリーク対策
このQ&Aのポイント
- クラスのメンバ変数の動的割り当てで例外処理を行い、メモリリークを防止する方法について教えてください。
- コンストラクタ内でメンバ変数に動的割り当てをする際に、例外発生時の正しい処理方法を教えてください。
- クラスのメンバ変数の割り当てと解放において、メモリリークが起きないようにするための最適な方法は何ですか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ん~, やっぱり std::vector を使った方がいいと思うけどなぁ.... とりあえず, ここに書いてあるだけならこれでいいと思う. ここに書いてない何かがあったら知らん.
その他の回答 (1)
- hitomura
- ベストアンサー率48% (325/664)
回答No.1
う~む、前の質問 http://okwave.jp/qa/q6522287.html とあわせて考えると、 class foo { private: std::vector<int> hoge; public: foo(); }; foo::foo() { hoge.assign(100/*実際に必要な個数*/, 0/*初期値*/); // hogeの代入処理:通常の配列と同様の[]が使える // } で十分な気がするんですが……。 あるいは、 foo::foo() { hoge.reserve(100/*実際に必要な個数*/); // hogeの代入処理 for (int i = 0; i < 100/*同上*/; i++){ int value = i/*hogeのi番目の要素の値/; hoge.push_back(value); } } とするとか。
質問者
お礼
回答ありがとうございます。 STLのvectorを使用した場合はそうなるんですね。 例外処理自体まだ経験が浅く、メモリリークに不安があったのでこの質問をしま した。
お礼
返答ありがとうございます。 動的確保はそれでいってみようと思います。
補足
vectorを使ってみたところ フリーズせず正常に動作しました。 やはり動的に確保してなにかしら負担をかけていたのが原因なんじゃないか とおもいます。