个性化阅读
专注于IT技术分析

c语言中的动态内存分配

本文概述

使用c语言进行动态内存分配的概念使C程序员可以在运行时分配内存。通过stdlib.h头文件的4个功能可以用c语言进行动态内存分配。

  1. malloc()
  2. calloc()
  3. realloc()
  4. 自由()

在学习上述功能之前,让我们了解静态内存分配和动态内存分配之间的区别。

静态内存分配动态内存分配
内存是在编译时分配的。内存在运行时分配。
执行程序时不能增加内存。执行程序时可以增加内存。
用于数组。在链表中使用。

现在让我们快速了解一下用于动态内存分配的方法。

malloc()分配请求的内存的单个块。
calloc()分配请求的内存的多个块。
realloc()重新分配由malloc()或calloc()函数占用的内存。
自由()释放动态分配的内存。

C语言中的malloc()函数

malloc()函数分配单个块的请求内存。

它不会在执行时初始化内存,因此它最初具有垃圾值。

如果内存不足,则返回NULL。

malloc()函数的语法如下:

ptr=(cast-type*)malloc(byte-size)

让我们看一下malloc()函数的示例。

#include<stdio.h>
#include<stdlib.h>
int main(){
  int n, i, *ptr, sum=0;  
    printf("Enter number of elements: ");  
    scanf("%d", &n);  
    ptr=(int*)malloc(n*sizeof(int));  //memory allocated using malloc  
    if(ptr==NULL)                       
    {  
        printf("Sorry! unable to allocate memory");  
        exit(0);  
    }  
    printf("Enter elements of array: ");  
    for(i=0;i<n;++i)  
    {  
        scanf("%d", ptr+i);  
        sum+=*(ptr+i);  
    }  
    printf("Sum=%d", sum);  
    free(ptr);   
return 0;
}

输出量

Enter elements of array: 3
Enter elements of array: 10
10
10
Sum=30

C语言中的calloc()函数

calloc()函数分配多个块的请求内存。

最初将所有字节初始化为零。

如果内存不足,则返回NULL。

calloc()函数的语法如下:

ptr=(cast-type*)calloc(number, byte-size)

让我们看一下calloc()函数的示例。

#include<stdio.h>
#include<stdlib.h>
int main(){
 int n, i, *ptr, sum=0;  
    printf("Enter number of elements: ");  
    scanf("%d", &n);  
    ptr=(int*)calloc(n, sizeof(int));  //memory allocated using calloc  
    if(ptr==NULL)                       
    {  
        printf("Sorry! unable to allocate memory");  
        exit(0);  
    }  
    printf("Enter elements of array: ");  
    for(i=0;i<n;++i)  
    {  
        scanf("%d", ptr+i);  
        sum+=*(ptr+i);  
    }  
    printf("Sum=%d", sum);  
    free(ptr);  
return 0;
}

输出量

Enter elements of array: 3
Enter elements of array: 10
10
10
Sum=30

C语言中的realloc()函数

如果内存不足以容纳malloc()或calloc(),则可以通过realloc()函数重新分配内存。简而言之,它会更改内存大小。

让我们看看realloc()函数的语法。

ptr=realloc(ptr, new-size)

C语言中的free()函数

必须通过调用free()函数释放由malloc()或calloc()函数占用的内存。否则,它将消耗内存,直到程序退出。

让我们看看free()函数的语法。

free(ptr)

赞(0)
未经允许不得转载:srcmini » c语言中的动态内存分配

评论 抢沙发

评论前必须登录!