単純なロジックに従うメモリプールの実装を作成することは可能ですか?
1-nバイト相当のメモリプールを割り当てます。
2-変更されたnew();を使用します。メモリを割り当てない関数/演算子は、メモリプールの先頭へのポインタのみを取得します。このようにして、オブジェクトはオーバーヘッドなしで動的に作成されます。
3-メモリプールが少なくなると、残りのメモリプールの割り当てが解除され、新しいメモリプールが割り当てられます
4-最初のメモリプールで作成されたオブジェクトは、サイズに基づいてメモリを取得するために残されます。最初のプールに割り当てられたものと、プールが少なくなったときに返されるものの違いは、オブジェクトが削除されると復元されます。
私の心配は主に、割り当てられたよりも小さいメモリプールを削除する方法がわからないという事実です。メモリプールオブジェクトの最後に残っているものの他に、メモリプールのOSヘッダーもあることに注意してください。これは、プールに割り当てられた最初のオブジェクトの前にあります。メモリがリークされていないこと、余分なメモリプールを削除しても、そこに割り当てられているオブジェクトが削除されないこと、メモリプールフラグメントのヘッダーが安全に削除されることを確認するには、どのようなアプローチが必要ですか。
ありがとう!
編集:意図は、メモリがメモリプールによって割り当てられ、オブジェクトによって解放されることであることに注意してください。オブジェクトは、ライフタイムが異なる場合があります。これが可能であれば...