Как бы я использовал memmove и memset, чтобы удалить элемент в моем списке структуры - PullRequest
0 голосов
/ 08 января 2020

Я пытаюсь удалить элемент из списка. Я заблудился от того, как бы я делал это с memset и memmove. Пример того, как я хочу это:

Исходный массив:

  1. test1 1 кг
  2. test2 2 кг
  3. test3 3 кг
  4. test4 4 кг
  5. test5 5 кг

После удаления элемента 2:

  1. test1 1 кг
  2. test3 3 кг
  3. test4 4 кг
  4. test5 5 кг

Мой код:

1 Ответ

2 голосов
/ 08 января 2020

Этот ответ является подсказкой, а не полным решением.

Если вы хотите удалить элемент 2 , вы можете просто переместить данные с адреса элемент 3 размером 3 элемента (3..5) по адресу элемент 2 с использованием memmove.

После этого уменьшения nrOfItemsAdded.

При желании вы можете realloc() памяти в меньшем размере.

Если вы не уменьшите выделенный размер, вы можете дополнительно использовать memset, чтобы очистить память 1 элемента по (старому) адресу , элемент 5 . На самом деле в этом нет необходимости, поскольку nrOfItemsAdded сообщает, что этот элемент не используется, и память будет перезаписана при следующем вызове addItems.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...