Realloc C

Системный вызов Waitpid на C Программирование и разработка

В этой статье будет рассмотрена концепция функции realloc() в языке программирования Си. Чтобы начать с этой концепции, мы должны знать о концепции выделения памяти и различных функциях выделения памяти в C. В языке программирования C существует два типа выделения памяти: статическое выделение памяти и динамическое выделение памяти.

Распределение памяти в C

Ресурсов постоянно не хватает. Мы всегда работали над улучшением использования ресурсов. Это стало основой нашего развития. Выделение памяти — это понятие, связанное с этой целью. Чтобы можно было создать реальные переменные, для создаваемых нами переменных должна быть назначена память. Теперь существует различие между тем, как мы думаем, что вещи происходят, и тем, как они происходят. Когда мы думаем сделать все, мы думаем начать с самого начала; тем не менее, когда компьютер создает переменную «X», это больше похоже на распределение; система просто выбирает ячейку памяти для X из широкого пула доступных ячеек памяти. Это похоже на то, как номер в гостинице назначается на чье-то имя из множества свободных или вакантных ранее существовавших номеров. Этот пример, скорее всего, поясняет, как компьютер управляет распределением памяти.

Теперь перейдем к типам распределения памяти, которые разрешены в языке программирования C: Статическое выделение памяти и Динамическое выделение памяти. Когда мы определяем переменные, мы устанавливаем все переменные, которые будут использоваться, чтобы компилятор понял, что мы делаем, потому что используемая переменная является важной частью программы, которую хочет пользователь, а не символ румян, плавающий через.

Пример из реальной жизни

Когда мы объявляем переменные, компилятор присваивает им свободные места в памяти, как если бы они находились в гостинице с уже существующими пустыми номерами, которые будут присвоены разным именам гостя. Как видите, это делается до запуска программы; вы не можете использовать этот подход для выделения переменных во время работы программы. Здесь в игру вступает динамическое выделение памяти.

Читайте также:  Функции Бесселя в SciPy

Пример программирования

Возьмем в качестве примера массив, так как размер объявлен ранее, и вы не можете настроить размер массива после его объявления. Возможно, указанный вами массив недостаточно велик. Вы можете вручную выделить память во время выполнения, чтобы решить эту проблему. Это называется динамическим выделением памяти. В языке программирования C есть несколько библиотечных функций, которые помогают нам динамически распределять память, которые определены в заголовочном файле «»; функции следующие:

  1. malloc() function,
  2. calloc() function,
  3. realloc() function,
  4. free() function.

Синтаксис функции malloc

Malloc — это аббревиатура выделения памяти. Блок памяти с указанным количеством байтов зарезервирован в функции malloc(). Он также возвращает указатель void, который можно превратить в указатель любого типа. Синтаксис функции malloc в программировании на C написан ниже:

#p = (castType*) malloc(size);

Если бы нам нужно было написать выражение для выделения памяти для целочисленной переменной, оно выглядело бы так:

= (int*) malloc(100 * sizeof(int));

Фрагмент кода, написанный выше, выделяет 400 байтов памяти. Причина этого в том, что целочисленный тип данных имеет размер 4 байта. Указатель «p» отслеживает начальный байт выделенной памяти.

Синтаксис функции calloc()

Непрерывное выделение — это аббревиатура термина «calloc». В программировании на C функция calloc() используется для выделения определенного объема памяти и последующего обнуления. Этот адрес памяти возвращается в виде пустого указателя, который впоследствии может быть преобразован к нужному типу. Функция принимает два аргумента, которые определяют объем памяти, который будет выделен в целом. Синтаксис функции calloc() в программировании на C написан ниже:

= (castType*)calloc(n, size);

Теперь мы рассмотрим функцию Realloc в программировании на C.

Функция Realloc() в C

Realloc означает перераспределение. Метод realloc() можно использовать для изменения размера ранее выделенной памяти, если динамически выделенной памяти недостаточно или больше, чем необходимо. Функция realloc() возвращает указатель на новый объект с размером, заданным size, и освобождает старый объект, на который ссылается ptr. Вплоть до меньшего из двух размеров элементы нового объекта аналогичны элементам предыдущего объекта до освобождения. Любые байты в новом объекте, превышающие размер старого объекта, имеют неопределенные значения. Realloc() следует использовать только для динамически выделяемой памяти; это стоит отметить. Поведение неизвестно, если пространство памяти не выделяется динамически.

Синтаксис функции realloc()

Ниже приведен синтаксис функции realloc() в программировании на C:

# realloc(ptr, new size);

В приведенном выше выражении realloc — это функция, которая изменяет размер ячейки памяти, на которую указывает ptr. Заголовок переменной-указателя, размер которой нужно изменить, — «ptr». «новый размер» относится к новому размеру области памяти. Он может быть меньше или больше нынешнего размера.

Хотя все эти функции успешно выделили место в памяти, они еще не свободны, и мы должны освободить их явно. Здесь функция free() требуется для освобождения выделенного места в памяти. Синтаксис функции free() описан ниже:

#free(ptr);

«Ptr» — это имя указателя, место в памяти которого будет освобождено.

Теперь мы рассмотрим выполнение функции realloc() в среде Ubuntu 20.04.

Реализация функции realloc() в Ubuntu 20.04

Поскольку мы знаем об основе функции realloc(), теперь мы можем реализовать эту функцию в среде Ubuntu 20.04. Чтобы выполнить наш код, запустите терминал с рабочего стола Ubuntu и введите «cd Desktop», чтобы перейти в каталог рабочего стола, затем с помощью этой команды «touch» вы можете создать файл.c с именем и расширением.c. Затем перейдите на рабочий стол, найдите и откройте файл.c. Теперь мы создадим в этом файле некоторый код, чтобы использовать метод realloc() для перераспределения памяти.

Изначально мы добавили две наиболее значимые библиотеки языка C. После этого мы приступили к нашей основной программе. Мы объявили переменную-указатель и сделали ее значение равным «Null». Что мы использовали метод realloc() и добавили к нему два параметра. Оператор «если» добавлен для проверки условия. Если указанное условие в порядке, компилятор выполнит оператор printf.

Изначально мы добавили две наиболее значимые

После нажатия кнопки сохранения закройте файл. Вернитесь к терминалу и введите «g++», затем имя файла и расширение «.c», чтобы создать выходной файл. Теперь вы можете выполнить этот файл, набрав «./», а затем расширение «.out», чтобы получить желаемый результат.

После нажатия кнопки сохранения закройте ф

Как видите, мы эффективно перераспределили пространство памяти указателя с помощью метода realloc(), и теперь благодаря этому примеру мы лучше понимаем, как эта функция работает в приложении на C.

Заключение

В этом уроке мы изучили концепцию выделения памяти и ее различные типы. Цель этой статьи состояла в том, чтобы узнать о плюсах и минусах метода распределения памяти и где их использовать. Различные функции в методе динамического выделения памяти также подробно обсуждались в этой статье. В конце концов, мы также реализовали функцию realloc() на языке программирования C в среде Ubuntu 20.04, чтобы лучше понять эту концепцию.

Оцените статью
bestprogrammer.ru
Добавить комментарий