本文概述
- C语言中的malloc()函数
- C语言中的calloc()函数
- C语言中的realloc()函数
- C语言中的free()函数
- malloc()
- calloc()
- realloc()
- 自由()
静态内存分配 | 动态内存分配 |
---|---|
内存是在编译时分配的。 | 内存在运行时分配。 |
执行程序时不能增加内存。 | 执行程序时可以增加内存。 |
用于数组。 | 在链表中使用。 |
malloc() | 分配请求的内存的单个块。 |
calloc() | 分配请求的内存的多个块。 |
realloc() | 重新分配由malloc()或calloc()函数占用的内存。 |
自由() | 释放动态分配的内存。 |
它不会在执行时初始化内存,因此它最初具有垃圾值。
如果内存不足,则返回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)