Допустим, у меня есть массив структур, и я хочу удалить запись, в которой есть структура с записью, соответствующей некоторым критериям.Удаление динамически выделенных элементов массива в C
Этот массив динамически выделяется с помощью malloc, я сохраняю число элементов в отдельной переменной.
Как мне удалить эту запись?
Я имею в виду
for (i = pos; i < arr_len; i++) {
arr[i] = arr[i+1];
}
arr_len--;
Но это оставляет такой же объем памяти для массива в то время как я на самом деле нужно меньше и сироту (вроде) последней записи.
Выдает ли realloc в такой ситуации общепринятую практику? Будет ли realloc делать memcpy в этом случае? (сокращение выделенной памяти на один блок).
Спасибо за улов на последнем доступе элемента. Я написал этот конкретный случай на бумаге, но все же сумел пропустить его, когда вкратце забыл, что массивы индексируются с 0! – Karolis