ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

テクスチャ解放のバグ

テクスチャ管理システムが保持しているテクスチャリストをデバッガで調べていたら、使用しなくなったテクスチャをちゃんと解放できていないことが分かった。
なぜだろうと調べていったらテクスチャ解放を行っているオブジェクトのデストラクタが呼ばれていなかった。もうこれは単純なミス。基底クラスのデストラクタにvirtualが付いていなかったのが原因。これを修正して無事にテクスチャが解放できた。
これでもう大丈夫と思ったら、今度はプログラムを終了しようとすると落ちてしまうようになった。これはタスクシステムの終了より先にテクスチャ管理システムを終了していたのが原因。タスクシステムを終了するときにまだ残っているタスクを削除する。このときタスクのデストラクタが呼ばれ、使用していたテクスチャを解放しようとする。ところがすでにテクスチャ管理システムが終了してしまっているので落ちてしまう。
これはタスクシステムを終了してからテクスチャ管理システムを終了するように順番を正しく修正。今まではちゃんとデストラクタが呼ばれていなかったためプログラムが落ちることは無く、このバグに気が付かなかった。
前のプロジェクトで最低限の機能は実装できたと思っていたのに、まだこんなに大きなバグが残っていたとは。