當您有一個動態分配的緩衝區,以不可預知的方式(例如向量或字符串)在運行時改變其大小時,優化其分配的一種方法是隻調整其後備存儲的權限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 memory manager的默認實現是否有這樣的優化?
void* p = malloc(N);
... // time passes, stuff happens
void* q = realloc(p,M);
換句話說,對於N和M(或在其他情況下)的哪些值,p == q?