予測できない方法で実行時にサイズを変更する動的に割り当てられたバッファ(ベクトルや文字列など)を使用する場合、その割り当てを最適化する1つの方法は、 2(またはその他の境界/しきい値のセット)を使用し、余分なスペースを使用しないでください。これは、新しい空きメモリを検索し、データをコピーするコストを償却するのに役立ちますが、わずかなメモリ使用量を犠牲にします。例えば、多くのC++ stlコンテナのインタフェース仕様(reserve vs resize vs trim)は、このような仕組みを念頭に置いています。malloc/realloc /空き容量の最適化
私の質問は、Linux 3.0 x86_64、GLIBC 2.13、GCC 4.6(Ubuntu 11.10)のmalloc/realloc/freeメモリマネージャーのデフォルトの実装は最適化されていますか?
void* p = malloc(N);
... // time passes, stuff happens
void* q = realloc(p,M);
別の言い方をすれば、NとMの値(または他の状況で)はp == qとなるでしょうか?