Изменения размера динамического массива char - C (СИ)
Формулировка задачи:
У меня следующее недопонимание в работе с памятью:
Есть допустим массив char'ов с именем array:
Содержание массива допустим:
012
char *array = (char *) malloc(10);
345
6789 У меня есть функция для удаления символов из строки. Удаляем символы 345, остаётся: 012. . .6789 И тут такой интересный момент. Я не знаю как правильно удалить эти символы с вот какой оговоркой. Если я их удаляю, то перемещаю на место 3 4 5 цифры 6 7 8 соответственно. В результате: 012. . .6789 // Было 0126789. . . // Стало Получается что 3 chara пропали вникуда. Как вернуть эти символы системе, чтобы ядро далее могло их использовать? Ведь когда я вызывал malloc, я резервировал виртуальную память именно такого размера под 10 символов.Решение задачи: «Изменения размера динамического массива char»
textual
Листинг программы
#include <stdlib.h> #include <string.h> /*...*/ memmove(array + 3, array + 6, 4); array = realloc(array, 7);
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
и - Производим некий код, который мы не видим (скрыт под
...
) - С помощью функции memmove() перемещаем блок памяти, начиная с 7-го элемента массива, на 4 позиции вперед (включая 0-й элемент). При этом, 3-й и 6-й элементы массива не участвуют в операции перемещения.
- С помощью функции realloc() изменяем размер массива array до 7 элементов.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д