c语言中的动态内存分配

本文概述

  • C语言中的malloc()函数
  • C语言中的calloc()函数
  • C语言中的realloc()函数
  • C语言中的free()函数
使用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()函数占用的内存。否则,它将消耗内存,直到程序退出。
【c语言中的动态内存分配】让我们看看free()函数的语法。
free(ptr)

    推荐阅读