用一个例子解释 C 中的动态内存分配

cserver side programmingprogramming更新于 2024/11/23 1:28:00

问题

使用 C 编程,使用动态分配的内存查找用户输入的 n 个数字的总和。

解决方案

动态内存分配使 C 程序员能够在运行时分配内存。

我们用来在运行时动态分配内存的不同函数是 −

  • malloc () − 在运行时以字节为单位分配一个内存块。
  • calloc () − 在运行时分配连续的内存块。
  • realloc () − 用于减少(或)扩展分配的内存。
  • free () −释放先前分配的内存空间。

以下 C 程序用于显示元素并计算 n 个数字的总和。

使用动态内存分配函数,我们试图减少内存的浪费。

示例

#include<stdio.h>
#include<stdlib.h>
void main(){
   //声明变量和指针,sum//
   int numofe,i,sum=0;
   int *p;
   //从用户读取元素数量//
   printf("输入元素数量:");
   scanf("%d",&numofe);
   //调用 malloc() 函数//
   p=(int *)malloc(numofe*sizeof(int));
   /*打印 O/p -
   我们必须使用 if 语句,因为我们必须检查内存
   是否已成功分配/保留*/
   if (p==NULL){
      printf("Memory not available");
      exit(0);
   }
   //打印元素//
   printf("输入元素:
");    for(i=0;i<numofe;i++){       scanf("%d",p+i);       sum=sum+*(p+i);    }    printf("
元素总数为 %d",sum);    free(p);//清除前 2 个内存位置//    printf("
显示清除的内存位置:
");    for(i=0;i<numofe;i++){       printf("%d
",p[i]);//将显示垃圾值//    } }

输出

输入元素数量:5
输入元素:
23
34
12
34
56
元素总数为 159
显示清除的内存位置:
12522624
0
12517712
0
56

相关文章