スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

メモリリークの原因が分かった・・・!

以前「完成した!」 と思っていたゲームが裏でメモリリークしまくっている事が判明
していたのですが、原因が分かってきました。

とりあえず、メモリリークが発覚した後 色々と変数などをいじった所、今度は
ヒープ領域が破壊 されたり、例外が発生して強制終了したり
するようになってしまったので、「もうダメだ」と思い
コンソールアプリケーションで1からクラスの見直しをしてみました。

で、分かってきた原因です。

【原因】
●継承
●delete
●newによる動的確保
●コンストラクタ、デストラクタ


継承におけるコンストラクタとデストラクタの挙動を把握しきれてませんでした。
継承はやりすぎると訳が分からなくなりますね。
これにより、newされたものがdeleteされなかったりdeleteが2度呼ばれたりしてた模様。
(あと、一部何故かdeletedelete[]になっていた)

動的に確保されたオブジェクトをメンバに含む場合は、
”コピーコンストラクタ”を実装しなければヤバい事になる との事。
(自分は言葉は知っていたのですが、具体的な使用法が出来ていなかった
---------------------------------------------------------------------
ついでにコンソールアプリケーションでの作業風景。
一瞬で終わると訳が分からないので、
Sleep関数で間隔を空けながら文字を表示させてます。
コンソール
コンソール2

早く完成させて、取扱説明書プログラムに適度なコメントをつけなければなりません。
原因も分かったので、何とか出来ると思う・・・!(`・ω・´;)

スポンサーサイト

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

コメント
コメントの投稿
管理者にだけ表示を許可する



上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。