Введение
В программировании на C мы не всегда можем заранее знать начальную размерность массива. В таких случаях мы используем динамическое выделение памяти — метод выделения памяти только при необходимости. malloc() — это функция, используемая в программировании на C для выделения определенного количества памяти, необходимого для массива или переменной, которая будет использоваться во время выполнения. В этом лабораторном задании мы научимся динамически выделять память с использованием malloc() и затем очищать память с использованием free().
Примечание: вам нужно самостоятельно создать файл
~/project/main.c, чтобы практиковаться в написании кода и изучать, как компилировать и запускать его с использованием gcc.
cd ~/project
## создать main.c
touch main.c
## скомпилировать main.c
gcc main.c -o main
## запустить main
./main
Подключить необходимые заголовочные файлы
В этом шаге мы будем подключать необходимые заголовочные файлы в нашу программу.
#include <stdio.h>
#include <stdlib.h>
Определить функцию main()
В этом шаге мы определим функцию main(). В этой функции мы объявим переменные, необходимые для программы.
int main()
{
int n, i, *ptr, sum = 0;
printf("\nEnter number of elements: ");
scanf("%d", &n);
Динамически выделить память с использованием malloc()
В этом шаге мы динамически выделим память с использованием malloc(). Размер выделяемой памяти определяется произведением количества элементов на размер каждого элемента с использованием оператора sizeof().
ptr = (int *) malloc(n * sizeof(int));
if(ptr == NULL)
{
printf("\nError! Memory not allocated.");
exit(0);
}
Сохранять значения в выделенной памяти
В этом шаге мы будем сохранять значения в выделенную память с использованием цикла.
for(i = 0; i < n; i++)
{
printf("\nEnter element %d: ", i + 1);
scanf("%d", ptr + i);
sum += *(ptr + i);
}
Вывести значения
В этом шаге мы выведем на печать сохраненные значения.
printf("\nElements entered are: ");
for(i = 0; i < n; i++)
{
printf("%d ", *(ptr + i));
}
Освободить память
В этом шаге мы освободим выделенную память с использованием free().
free(ptr);
Резюме
В этом практическом занятии мы узнали, как динамически выделять память с использованием malloc() и освобождать память с использованием free(). Мы узнали, как объявлять переменные в функции main() и выделять память с использованием malloc(). Мы также узнали, как хранить данные в выделенной памяти, выводить на печать сохраненные значения и затем освобождать выделенную память с использованием free().



