При использовании realloc
, нет прямого механизма, который заставляет элементы массива перемещаться. realloc
пытается расширить или [за]сузить существующий блок памяти. Если это возможно (достаточно места рядом), он просто меняет размер. Если нет — он выделяет новый блок, копирует туда содержимое старого и освобождает старый.
Чтобы гарантировать "перемещение" (в смысле, что данные окажутся в новом месте), можно воспользоваться следующим подходом:
malloc
.free
.Это по сути имитирует поведение realloc
, когда он не может расширить существующий блок.
Пример:
c
При использовании realloc
, нет прямого механизма, который заставляет элементы массива перемещаться. realloc
пытается расширить или [за]сузить существующий блок памяти. Если это возможно (достаточно места рядом), он просто меняет размер. Если нет — он выделяет новый блок, копирует туда содержимое старого и освобождает старый.
Чтобы гарантировать "перемещение" (в смысле, что данные окажутся в новом месте), можно воспользоваться следующим подходом:
malloc
.free
.Это по сути имитирует поведение realloc
, когда он не может расширить существующий блок.
Пример:
c
Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.