cocos2d-x:CCObjectでretain

 Objective-Cは、C++とはメモリ管理のしくみが、かなり違っています。cocos2dはもともとObjective-Cで書かれていたものですから、このしくみをエミュレートするCCObjectというクラスがあり、多くのオブジェクトがここから派生しています。自作クラスもここから派生することが多いでしょう。

というところを背景にして、以下の注意が必要です。
privateフィールドに、CCObjectのポインタ変数(多くはcreateメソッドで得た)を保持して、以後も使いまわそうとする場合、そのポインタ変数に対してretain()メソッドを呼び出しておく必要があります。これを怠ると、このポインタ変数が指すエリアはリリースされてしまい、妙な動作をしたり、実行時エラーになります。

cocos2d-x本家のwikiにも、この記載があります。