cocos2d-xの2.x系のお話です。CCFileUtilsにはファイルデータを扱う為のユーティリティーがたくさん集まっててcocos2d-xでデータを保存したり読み込みしたりでき便利なのですが、getFileData()を扱う際には注意しないとメモリリークしちゃうんで、メモで書いておきます。
getFileDataって?
まずはいつも通り、getFileDataに関しての簡単な説明を。
ただまあ読んで字のごとく、FileのDataをgetしてくれます。Resourceフォルダに入れたファイルなら、画像でもテキストデータでも取得できます。
CCFileUtils::sharedFileUtils()->getFileData(ファイル名,読み込みモード,サイズ)
サイズは適当に1024なり読み込む大きさに合わせてやっておくと、あとは
getFileDataにポインタを渡すことでセットしてくれます。
詳しい使い方はこんな感じです。
unsigned long fs = 1024; //読み込みモードはr(テキスト)、rb(バイナリ)です。 unsigned char* text = CCFileUtils::sharedFileUtils()->getFileData("test.txt", "r", &fs); std::string str((const char*)text , fs);
こうやると、strの中にテキストデータが入ってくれます。
内部的には、ただfopen()をし、ごにょごにょやって最後fclose()するという王道的なことをやってくれています。
ただ、これメモリリークします。
上記のコードだけの場合、実はこれメモリリークしちゃいます。
というのも、getFileData()の戻り値は、newしてるんですね。
なので、使い終わったら最後にdeleteしちゃいましょう。
delete[] text;
これで大丈夫ですね。
今回は短い投稿です。短い方が読みやすいですよね。