Каков механизм выделения битов под участок памяти - C (СИ)
Формулировка задачи:
Кто нибудь знает механику выделения битов под участок памяти?
Суть в чем:
- Объявил функцию, в ней забрал кусок динамической памяти, вышел из функции, отдал "вверх" ссылку на адрес этого участка. (статики не объявляю, автоматические переменные все схлопнулись).
- Зашел в другу функцию, получил в фактически в стек копию той ссылки, играюсь с ней (инкрементируя саму ссылку, уходя в середину участка) копию полученной ссылки умышленно не объявлял.
Решение задачи: «Каков механизм выделения битов под участок памяти»
textual
Листинг программы
char **myRealloc(char **cTextBuffer){ char * tmpCTB; if ((tmpCTB = (char *)calloc(sizeof(char), (size_t)(bLetterCounter + 1lu))) != NULL) { memcpy(tmpCTB, *cTextBuffer, (size_t)bLetterCounter * sizeof(char)); free(*cTextBuffer); *cTextBuffer = tmpCTB; } return cTextBuffer; }
Объяснение кода листинга программы
- В функции
myRealloc
принят указатель на строку символов в качестве аргумента. - Выделен новый блок памяти с помощью функции
calloc
для строки символов, увеличенной на единицу, относительно исходной строки. - Значение
bLetterCounter
увеличивается на единицу относительно значения, переданного в функциюmyRealloc
. - Выполняется копирование символов из исходной строки в новую строку с использованием функции
memcpy
. - В функции
free
освобождается память, выделенная под исходную строку символов. - В функцию возвращается обновленный указатель на новую строку символов.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д