std::unique_ptrとカスタムデリータ使ったやっつけリソース管理メモ
現実逃避コーディングなう
#include "Dxlib.h" #include <memory> #include <functional> int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode( TRUE ) ; if( DxLib_Init() == -1 ) { return -1;} SetDrawScreen( DX_SCREEN_BACK ) ; while(ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0) { ClearDrawScreen() ; std::unique_ptr<int,std::function<void(int*)>> graph_handle( new int( LoadGraph("test.bmp") ), [](int *handle){ DeleteGraph( (*handle) );} ); DrawGraph(100,100,(*graph_handle),TRUE); ScreenFlip() ; } DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 }
間違って毎フレーム読み込んでるのにメモリふえない! ふしぎ!
って使いかたはアレ過ぎるとしても、開放し忘れが存在しなくなるって点はいいよね。
リソース管理とかに使っていきたいトコロ。
……まあ、ゲームのリソース管理とかならぶっちゃけ同じ使い方でstd::shared_ptr使うべきな気はするけどね!
……カスタムデリータ使いたかっただけです。はい。