次のようなことはありますか?
- 多くの可変サイズのオブジェクトを断片化せずに割り当て/割り当て解除/再割り当てし (基本的には何をするか
malloc
)、 - これらの割り当てに使用されたすべてのメモリ ページを追跡できるので、
- 後で
mprotect
これらのページをすべて読み取り専用にする - できればロックなし - すべてのアクセスはシングルスレッドになります
- Linux と OS X で動作し、できれば Windows で同等のものを使用できますか?
標準のメモリ割り当て関数でこれを行う方法は考えられません。頭に浮かぶ唯一の戦略は、カスタム メモリ プールの代わりに使用することですmalloc
。malloc
だから私の質問は次のとおりです。カスタムまたは(ない場合)何を使用するかについての提案なしでこれを行う方法はありますか?
使用したすべてのページを非常に簡単にラップmalloc
して追跡できますmprotect
。これらのページを呼び出すmalloc
と、割り当てられたブロックの開始前または終了後に「キャッチ」されたメモリを使用しようとしないことを保証するにはどうすればよいですか影響を受けるページの 1 つに含まれていますか?