Вопрос

Я столкнулся с этим маленьким кусочком кода в этот вопрос, & хотел знать,

Может realloc() Функция когда-либо перемещается блок памяти в другое место, когда пространство памяти указывало, что уклоняется?

int * a = malloc( 10*sizeof(int) );
int * b = realloc( a, 5*sizeof(int) );

Если возможно, при каких условиях я могу ожидать b иметь адрес, отличный от этого в a?

Это было полезно?

Решение

Это возможно для realloc переместить память на любой вызов. Правда во многих реализациях усадка просто приведет к изменению зарезервированных размеров в куче и не будет перемещать память. Однако в куче, который оптимизирован для низкой фрагментации, он может выбрать память вокруг до лучшего места установки.

Не зависит от realloc хранение памяти в том же месте для любой операции.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top