ようやく1年度の授業も終了、最後の課題も提出しましたが…
タスクマネージャーを開きながらプログラムを実行していたところ、
パフォーマンスのコミットチャージの値がどんどんと増えていく…!!
というのは
ゲームタイトルシーン->ゲーム画面へ
という処理をするときに本来ならばタイトルシーンをdeleteしてゲームシーンをnew、
同じようにゲームシーンからタイトルシーンに戻るときはゲームシーンをdeleteしてタイトルシーンをnewする
というような感じで設計したはずで、ちゃんとデストラクタも呼んでるし(ちゃんと呼ばれてるし)、
画像もちゃんとDeleteGraphしてるし配列もちゃんとdelete[]しているにも関わらず、
シーンが移り変わるたびにメモリがどんどんと増えていく…
というようなこともあり、最近はゲームループ内にnewを置くのが怖くて怖くてたまりません。
的なことを先生に相談し、
「newを使わないで最初からメモリ領域取っておけばいいじゃん」と言われる。
まぁ実際のところそのほうが確かに安全ではあるのですが、
ちゃんとdeleteしているにも関わらずメモリリークを起こしている原因をとりあえず突き止めたいです。
そのへんちゃんと考えて設計したはずなんだけどなぁ…^^;
もう少し調べてみましょ
new恐怖症
RE: new恐怖症
shared_ptr どうですか?
deleteと永遠におさらばできますよ
速度が気になるのならばintrusive_ptrお勧めです。こっちは自分が好きな奴です(shared_ptr より簡単に使えないのがミソですけど)
http://www.kmonos.net/alang/boost/smartptr.html
ここのサイトに紹介されています。
(・・・自分のようなboost中毒者になるかもですが(笑))
deleteと永遠におさらばできますよ
速度が気になるのならばintrusive_ptrお勧めです。こっちは自分が好きな奴です(shared_ptr より簡単に使えないのがミソですけど)
http://www.kmonos.net/alang/boost/smartptr.html
ここのサイトに紹介されています。
(・・・自分のようなboost中毒者になるかもですが(笑))
RE: new恐怖症
Visual C++ならメモリリークの診断報告機能が標準装備されているので活用してみては?
"_CrtSetDbgFlag"で検索すると詳しい使い方が見付かりますよ。
"_CrtSetDbgFlag"で検索すると詳しい使い方が見付かりますよ。
RE: new恐怖症
GRAMさん
おお、自動的にdeleteしてくれるのですか!
それを使って書いてみるのもいいかもしれませんねw
検討してみます!
おお、自動的にdeleteしてくれるのですか!
それを使って書いてみるのもいいかもしれませんねw
検討してみます!
RE: new恐怖症
ISLeさん
その関数は使ってみたのですが、いまいちそれっぽい結果は返ってきませんね…
もしかしたらメモリリークは起きていなくて、自分のパフォーマンス画面の見方が間違えてるだけなのかも、
と勘ぐっているのですがそれでも不安な感じがしてなりませんね^^;
その関数は使ってみたのですが、いまいちそれっぽい結果は返ってきませんね…
もしかしたらメモリリークは起きていなくて、自分のパフォーマンス画面の見方が間違えてるだけなのかも、
と勘ぐっているのですがそれでも不安な感じがしてなりませんね^^;
RE: new恐怖症
バグさん
そうなんですよねぇ…実際のところ、
本当にメモリリークを起こしているという確証が得られていないので(曖昧な感じです)
いろいろWindowsのperfmonから.NET CLR Memoryなどをカウンタで設定して調べたりもしてみたのですが、
グラフが著しく変わる事はなく、でも数値は明らかにどんどんと変わっていて
起きてるのか、起きてないのか、実際のところよくわかっていない現状です^^;
そうなんですよねぇ…実際のところ、
本当にメモリリークを起こしているという確証が得られていないので(曖昧な感じです)
いろいろWindowsのperfmonから.NET CLR Memoryなどをカウンタで設定して調べたりもしてみたのですが、
グラフが著しく変わる事はなく、でも数値は明らかにどんどんと変わっていて
起きてるのか、起きてないのか、実際のところよくわかっていない現状です^^;
RE: new恐怖症
dicさん
newが原因ではなくリソースの問題かもしれないと思い、いろいろ見ていったのですが、
どうやらそれが原因でもなかったみたいでした。
僕もnewが本当に原因なのか、と感じているのですが
それ以外に思い当たるふしが見つからないといいますか…
そもそもリークしているのかどうか自体怪しいものです汗
newが原因ではなくリソースの問題かもしれないと思い、いろいろ見ていったのですが、
どうやらそれが原因でもなかったみたいでした。
僕もnewが本当に原因なのか、と感じているのですが
それ以外に思い当たるふしが見つからないといいますか…
そもそもリークしているのかどうか自体怪しいものです汗