すごい久しぶりにブログを更新します。
春くらいから Cocos2d-x を使用して開発を行なっています。これからちょこちょこと Cocos2d-x のことを書いていこうと思います。

今回は左下に表示される FPS 表示の横に残りのメモリ量を表示する方法です。
下記の cocos2d での方法を cocos2d-x に移植しました。
Raising awareness: memory usage & leaks

デバッグ時に自分の思い通りにメモリ解放できているか確認できて便利です。(厳密には出来ませんので大雑把に把握する感じです)

CCDirector.h

protected:
    // メソッドの定義を追加
    static double getAvailableBytes();
    static double getAvailableKiloBytes();
    static double getAvailableMegaBytes();

CCDirector.cpp

// add for memory function
#include 
#import 
#import 

// メソッドを追加
double CCDirector::getAvailableBytes() {
    vm_statistics_data_t vmStats;
    mach_msg_type_number_t infoCount = HOST_VM_INFO_COUNT;
    kern_return_t kernReturn = host_statistics(mach_host_self(), HOST_VM_INFO, (host_info_t)&vmStats, &infoCount);

    if (kernReturn != KERN_SUCCESS)
    {
        return 0.0f;
    }

    return (vm_page_size * vmStats.free_count);
}

double CCDirector::getAvailableKiloBytes()
{
    return CCDirector::getAvailableBytes() / 1024.0;
}

double CCDirector::getAvailableMegaBytes()
{
    return CCDirector::getAvailableKiloBytes() / 1024.0;
}

CCDirector.cpp

// 下記行を修正します
// sprintf(m_pszFPS, "%.1f", m_fFrameRate);   // commented this line
sprintf(m_pszFPS, "%.1f %.1f", m_fFrameRate, CCDirector::getAvailableMegaBytes()); // add this line

あと、今回は protect メソッドにしていますが、public にして直接コールして CCLog などで出力させてプログラム内で思い通りにメモリ解放できているか確認するとかなり便利でした。

関連する投稿