В обычных реализациях, таких как 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 как оптимизацию (за счет постоянной переписи), и я хочу знать, стоит ли даже попробовать.