Каков механизм выделения битов под участок памяти - 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
освобождается память, выделенная под исходную строку символов. - В функцию возвращается обновленный указатель на новую строку символов.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д