2012-04-03 1 views
6

SDL_Surface *をshared_ptrに接続するにはどうすればいいですか?
SDL_Surfaceを削除する前にSDL_FreeSurface(SDL_Surface*)に電話する必要があります。 shared_ptrの「削除プロセス」を変更するにはどうすればよいですか?SDL_Surfaceをshared_ptrに接続する

答えて

13

ただ、コンストラクタにSDL_FreeSurfaceを渡す:

std::shared_ptr<SDL_Surface> shared_surf(SDL_LoadBMP("foo.bmp"), SDL_FreeSurface); 

はちょうどあなたがSDL_SetVideoModeまたはSDL_GetVideoSurfaceによって返されたポインタでこれをしないことを確認してください。

+1

これをなぜやってはいけないのですか? (SDL_SetVideoModeなど..) – user1511417

+3

@ user1511417:[ドキュメント](http://www.libsdl.org/docs/html/sdlsetvideomode.html)に従って。 * "返されるサーフェスはSDL_Quit()によって解放され、呼び出し元によって解放される必要はありません。" * –

関連する問題