一、创建方法
静态数组:
int a[5];
a[5] = {1, 2, 3, 4, 5};
数组的长度预先设定好且为常量
动态数组:
int lenth;
int *a = new int[lenth];
delete []a; //释放空间
或者
int *a = (int*)malloc(sizeof(int));
free(a); //释放空间
可以在程序运行过程中输入lenth
二、为什么要使用动态数组
如果在预编译过程阶段,数组的长度不能预先知道,数组长度是在程序运行时给出,而静态数组定义必须知道长度,所以需要使用动态数组。
三、创建的空间位置
静态数组是在栈上创建,不需要自行释放空间,效率高,但空间有限。
动态数组是在堆上创建,需要自行释放空间,效率较低。
四、new和malloc区别
- new/delete是C++关键字,需要编译器支持。
malloc/free是库函数,需要头文件支持。(stdlib.h) - new操作符内存分配成功时,返回的是对象类型的指针。
malloc内存分配成功是返回void * ,需要通过强制类型转换将void*指针转换成我们需要的类型。 - new 用 delete释放空间。
malloc 用free释放空间。
更多