刚接触c时,定义数组大小一直都是凭感觉,因为宁多勿少,不知内存的分毫珍贵,哈哈,开玩笑。。。
由于数组长度必须为常量,所以不能用scanf临时输入,这时候,malloc可以帮我们解决窘境。
系统里有个老板,叫内存管理器,他负责管理闲置的内存,而malloc可以向这个老板借内存,用完之后再free还回去,就没事了…
例子:
malloc是在头文件”stdlib.h”里
void* p=malloc(512);//和老板借内存
free (p); //释放,把内存还给老板
老板是不关心你拿内存干嘛的,所以返回void*
实例:
假设已经定义一个struct list,我现在要100个list,
int n= 0 ;
scanf(“%d”,&n); //输入100
int size = n * sizeof(list); // sizeof是计算大小的
list* p=(list*) malloc(size);
这块内存和数组没有本质区别,用法完全相同。
注意,不需要内存了,就立即free释放,还给老板(内存管理器)。