malloc()
以给定大小分配内存以存储某个变量类型。
它的格式如下:
p = (type *)malloc(size);
type
是一个类型转换,指示malloc()
分配一大块内存,用于存储给定变量类型的适当信息量。size
是需要的存储量。
它以字节为单位进行测量,但必须分配足够的存储空间以容纳变量类型。malloc()
函数返回已分配的内存块的地址。地址存储在指针p
中,指针p
必须与变量类型匹配。
无法分配内存时,将返回NULL
值。在使用分配的内存之前,必须检查是否为NULL
。
示例代码
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *age;
age = (int *)malloc(sizeof(int)*1);
if(age == NULL)
{
puts("无法分配内存");
exit(1);
}
printf("你今年多大了? ");
scanf("%d",age);
printf("你今年 %d 岁了.\n",*age);
return(0);
}
执行上面示例代码,得到以下结果:
你今年多大了? 22
你今年 22 岁了
该代码使用malloc()
为一个整数分配存储空间。为确保分配适当的存储量,使用sizeof
运算符。要为一个整数分配空间,将1
乘以sizeof(int)
作为结果。
该存储的地址保存在age
指针中。代码测试以确保malloc()
能够正常分配内存。
如果不能正常分配,则返回的值为NULL
,程序显示错误消息并退出。