目录
1.如果空间用完了,用malloc()函数和free()函数会发生什么?
引入
我们知道,所有的程序都要预够的留足内存才能让程序正常的运行。在之前的学习中,在确定下一种储存的类别后,会根据已经制定好的内存管理规则选择其作用域和储存期,比如语句:
int a[10];
这个语句声明预留了10个内存位置,每一个位置都用于储存int类型的值。假如我们不输入数组的长度,编译器就会报错。但是在一些情况下,我们并不知道数组的实际长度。或者说在数据量比较大时(如a[666]),声明后就将内存安排好了,但是在最后实际没有用到那么多,就造成了内存的浪费。所以需要有一种方法,可以做到更灵活地分配内存的使用。
malloc()的使用
malloc()函数,这个函数接受一个参数----所需要的内存字节数,使用malloc()可以找到内存中闲置区域,按需分配,根据这样的特性,我们就可以将其等价为动态数组a[n]来使用。(C99之前,是不允许n为一个变量)其格式如下:
a=(*int)malloc(number*sizeof(int);
number是一个实参,用来表示想要要输入的某种类型的值(由前面定义)的个数,并且和sizeof()进行乘法运算,malloc()括号里