質問の目的で、最初にn個のブロックが割り当てられたメモリプールがあるとします。ただし、容量に達すると、プールは大きくなり、2倍のサイズ(2n)になります。
これで、このサイズ変更操作はCで実行できますがrealloc
、関数自体が別のメモリへのポインタを返す場合があります(古いデータがコピーされます)。
これは、メモリプールアロケータによって返されたポインタが無効になっている可能性があることを意味します(メモリが移動された可能性があるため)。
この問題を克服するための良い方法は何でしょうか?それとも可能ですか?