0

問題は次のとおりです。特定の量の単語 (20M としましょう) があり、それぞれにフラグとして使用されるいくつかのビットが含まれています。すべて単一の連続バイナリ ファイルに保存されます。

私がやりたいのは、コンテナのようなスタイルでこれらの単語にアクセスできるようにすることです。これにより、 i 番目の単語container_instance[i]にアクセスできるようになります。さらに複雑なことに、一度にすべての単語をメモリに保存することはできません。それらをファイルに保存し、長期間使用されていない単語のためにメモリを解放する必要があります。簡単にするために、シーケンス全体が 1K のフラグメントに分割されているため、そのような 1K ブロックを解放して割り当てる必要があります。しばらくしてから、またはコンテナが一定回数アクセスされた後に、メモリを解放する必要があります。

あると便利なスレッドセーフ。しかし、私は外部から保護することができます。

私が現在持っている実装は、オンデマンドでのみブロックを割り当てます (空にするか、利用可能な場合はファイルから読み取ります。ファイルはスパースではないため、ファイルの最後のバイト以降はすべて空に割り当てられます)、うまくいきません。まったく解放されないため、未使用のブロックは永久にメモリに残ります。

見栄えの良いソリューションについて考え始めました.STLまたはBoostsの要素が、最初から段階的に彫刻するのではなく、そのようなコンテナを構築するのに役立つかどうかを知りたいですか?

私は完全な解決策を期待しているわけではなく、「そのためにそれを使用できる」と指摘しています。

4

1 に答える 1