malloc():用于分配内存空间,但不对内存空间进行优化。
calloc():用于分配内存空间,并将内存空间全部清零。
realloc():用于调整先前分配的内存空间大小。
free():用于释放由malloc()或calloc()函数动态分配的内存空间。
1.malloc()函数
malloc()函数用于分配内存空间,其函数原型如下:
void *malloc( unsigned int size);
功能:在内存的动态存储区中分配一块长度为“size”字节的连续内存空间。如果分配成功,则返回所分配内存空间的首地址;如果分配不成功,则返回空指针NULL。
例如:
int *p;
p=(int*)malloc(sizeof(int)): //分配一个4个字节的内存空间
*p=100; //将100保存到分配的内存空间中
printf(“a”, *p); //输出100
C语言中,还可以使用malloc()函数来动态生成数组。例如:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *pa, i, n=5; //其中n为输入数字长度,可更改
pa=(int *)malloc(n*sizeof(int));//分配一个20个字节的内存空间
for (i=0; i<n;i++)
scanf(“%d”, &pa[i]);
for (i=0;i<n; i++)
printf(“%d”, pa[i]);
return 0;
}
2.free()函数
free()函数用于释放内存空间,其函数原型如下:
void free(void *p);
功能:释放p所指向的一块内存空间,p是指向的被释放空间的首地址,被释放的内存空间必须是由malloc()或calloc()函数所分配的。