malloc函数包含于头文件<stdib.h>中
向malloc申请的空间大小是以字节为单位的
返回的结果是void*,需要转换为自己需要的类型
(int*)malloc(number*sizeof(int))
如果申请失败,则返回0,或者叫做NULL
free() 把申请来的空间还给系统
只能还首地址!
可以free(NULL)
动态内存分配的应用实例:确定数组大小
#include <stdio.h>
#include <stdlib.h>
//动态内存分配,C99之前,以实现数组大小在运行时才确定。
int main()
{
int number,i;
int* a;
printf("Please input quantity:");
scanf("%d",&number);
a=(int*)malloc(number*sizeof(int));
for(i=0;i<number;i++)
scanf("%d",&a[i]);
for(i=number-1;i>=0;i--)
printf("%d ",a[i]);
free(a);//还回内存
return 0;
}
你的系统可以申请多少内存?
#include <stdio.h>
#include <stdlib.h>
int main()
{
void *p;
int cnt=0;
while( (p=malloc(100*1024*1024)) ){
cnt++;
}
printf("%d00MB\n",cnt);
return 0;
}