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

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

newとdeleteの位置

あるオブジェクトを作成したまま解放し忘れていたと思い、delete文を追加したところ、実行してみたらassertで落ちてしまった。よく見てみたら解放し忘れていたわけではなく、別のところで解放されていたのが落ちた原因。
これは自分が作成したタスクシステムで起きたもので、作成したオブジェクトをタスクとして登録したときはタスクシステム側で解放されるような設計になっていた。そのような設計になっていたのをつい忘れてしまっていた。
このようにnewする場所とdeleteする場所が異なっているのは良くないコード。あるクラス内でnewしたら、そのクラス内でdeleteするようにしたほうが良い。もしそうではない場合は間違ってdeleteしてしまわないようなコードにしておくべき。
ちょっとタスクシステムの設計を見直さないと。