介绍
在 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() 释放分配的内存。



