メモリリークの検出(C++)

C++版にはLive2Dの内部で確保したメモリに関して、リークしているかどうかを検出する機能があります。
具体的にはinit()からdispose()までにLive2Dが確保したメモリについての情報をダンプします。

※ この機能はDEBUGビルド時しか機能しません。 ( VisualStudioなら_DEBUG、XCodeならDEBUGマクロが有効の時)

//initを呼ぶ前にフラグを設定します。
UtDebug::addMemoryDebugFlags( UtDebug::MEMORY_DEBUG_MEMORY_INFO_COUNT ) ;

Live2D::init(  );

/***** モデルやモーションの生成、破棄 *****/

Live2D::dispose();//この時にメモリ情報を表示します。

出力例
----------------- Live2D Memory Info -----------------
Successfully cleaned (no memory leaks found). 

  local malloc count  : remaining     : 0
  local malloc count  : total         : 48884
  local malloc memory : current       : 0 byte
  local malloc memory : peak          : 539 KB
  local malloc memory : total         : 1351 KB

  allocator malloc count  : remaining : 0
  allocator malloc count  : total     : 109
  allocator malloc memory : current   : 0 byte
  allocator malloc memory : peak      : 604 KB
  allocator malloc memory : total     : 802 KB

  LDObject           instance count : 1
  LDObject           total count    : 47303
  LDUnmanagedObject  instance count : 0
  LDUnmanagedObject  total count    : 1
------------------------------------------------------

出力のうち重要なのは
local malloc count : remaining

allocator malloc count : remaining
の項目です。
これらが0になっていない場合はLive2D関連のオブジェクトの解放忘れがあります。

Comments