私はいくつかのグラフィックプログラミングを行っており、頂点プールを使用しています。プールから範囲を割り当てて、これを描画に使用できるようにしたいと思います。
必要なソリューションとCアロケータの違いは、mallocとは呼ばないことです。代わりに、配列を事前に割り当ててから、それをラップして空き領域を追跡し、渡した割り当てから範囲(開始/終了ポインターのペア)を割り当てるオブジェクトが必要です。
どうもありがとう。
私はいくつかのグラフィックプログラミングを行っており、頂点プールを使用しています。プールから範囲を割り当てて、これを描画に使用できるようにしたいと思います。
必要なソリューションとCアロケータの違いは、mallocとは呼ばないことです。代わりに、配列を事前に割り当ててから、それをラップして空き領域を追跡し、渡した割り当てから範囲(開始/終了ポインターのペア)を割り当てるオブジェクトが必要です。
どうもありがとう。
一般的に:あなたは(ウィキペディアを参照)メモリプール(TokenMacGuyによって答えられたboost :: poolのような)を使用するメモリマンガを探しています。彼らは多くの味があります。重要な考慮事項:
boost :: poolの場合、単純な分離ストレージは一見の価値があると思います。これにより、最適なものが検索される多くの異なるブロックサイズでメモリプールを構成できます。
boost :: poolはこれを非常にうまく行います!
代わりに、配列を事前に割り当ててから、それをラップして空き領域を追跡し、渡した割り当てから範囲(開始/終了ポインターのペア)を割り当てるオブジェクトが必要です。
これは基本的にmalloc()が内部で行うことです(malloc()は、いっぱいになると、この「事前に割り当てられた配列」のサイズを増やすことができます)。そうです、そのためのアルゴリズムがあります。実際、多くのことがあり、ウィキペディアは基本的な概要を示しています。さまざまな戦略がさまざまな状況でうまく機能する可能性があります。(たとえば、すべてのブロックが同じサイズである場合、または割り当てと解放に何らかのパターンがある場合)
同じサイズのオブジェクトが多数ある場合は、obstacksを調べてください。
おそらく自分でコードを書きたくないでしょう。それは簡単な作業ではなく、バグは苦痛を伴う可能性があります。