直接用数组分配内存
int Array[100];
静态数据在程序载入时分配内存,而自动数据在程序执行块时分配,并在程序离开该块时销毁。
malloc()该函数接受一个参数:所需内存字节数。
malloc()会分配内存,但不会对其赋名。但是,能返回动态分配内存块的首字节地址!
malloc()可用于返回指向数组的指针,指向结构的指针等,通常该函数的返回值会被强制转换为匹配的类型。
要用强制类型转换为匹配的类型,提高代码可读性。
例子:
double * p; p = (double *) malloc(30*sizeof(double));
注意:可以用p[0]、p[1]等来访问分配的空间。啊哈~ 这不就是当数组用!
另外:
p = (double *) malloc(n*sizeof(double));
使用n,变量定义分配内存也是被允许的。
free()free()释放内存。
free()的参数是指针(malloc()函数返回的地址),指向由malloc()分配的一块内存。
动态分配的内存数量只会增加,除非用free()进行释放。
(这是不是有的程序运行一段时间就会卡,然后重启就好了的罪魁祸首??没有释放内存?)
calloc()也可用calloc()分配内存
double * p; p = (double *) calloc(30*sizeof(double));
第1个参数:所需的存储单元的数量。第2个参数:存储单元的大小。
calloc()会把块中所有位置都设置为0。
free()也用来释放calloc()分配的内存。、
malloc()比较变长数组
malloc()创建的数组可以在其他程序访问,用完释放即可。
变长数组为自动存储类型,会被自动释放。
free()指针变量可以和malloc()指针变量不同,只要地址相同就可以。
malloc声明二维数组也可,就是麻烦
函数示例:
int main()
{
double * p;
p = (double *) malloc(30*sizeof(double));
//操作
free(p);
}



