В обычных реализациях, таких как Linux/Glibc, Windows/MSVC и BSD/Mac OS X, будет
void *p = malloc(N + M); // assume this doesn't fail
p = realloc(p, N); // nor this
для N
, M > 0
, фактически сократите буфер, возвращенный malloc
в вызове realloc
, в том смысле, что до M
байты могут вернуться в свободный список? И что еще более важно, есть ли вероятность перераспределения буфера?
Я хочу знать, потому что я только что реализовал динамические массивы поверх numpy.ndarray
, и я делаю resize
, который вызывает realloc
, чтобы получить конечный размер. Я могу пропустить окончательный resize
как оптимизацию (за счет постоянной переписи), и я хочу знать, стоит ли даже попробовать.