コンシューマとかのゲーム開発で画像(というよりは大きいリソース)を扱っていると、メモリの断片化が起こって悲しいことになることがよくあります。 対策としてメモリアロケータを変えたり、一括でメモリを確保したりといった方法で何とかすることがありますが、ここでは、メモリのデータを移動させる(リロケートする)ことで何とかするライブラリを作ってみました*1。これで断片化ともおさらばです。 GitHub - melpon/reloc: Relocatable Pointer リソースデータは基本的にでかいので、リロケートの際に出来る限り移動する量が少なくなるようにしてみました。 使い方 登場人物は reloc_pool, reloc_ptr, pinned_ptr のみなので、使い方は簡単です。 unsigned char* p = new unsigned char[100]; reloc::relo