1.简介:
动态数组与静态数组的区别在于,动态数组不需要提前指明申请的内存大小,其他操作和静态数组类似,但是动态数组用完需要释放,否则会内存泄漏。
2.使用
- 申请
int* tempPoints = new int[num];
其中,num可以是变量,(与静态的差别)
- 初始化
int* hist = new int[256]; //无初始化
int* hist = new int[256](); //初始化为0
- 释放
//这种方式可能要加一个保护判断使用 ,如if(hist!=null){}
int* hist = new int[256];
delete []hist
//更为安全的释放方式:
#define SAFE_DELETE_ARRAY(x)
{
if (x) delete[](x);
(x) = NULL;
}
- 日常使用:
for (int k = 0;k < num;k++) {
hist[k]++; //类似静态数组使用
}
3.其他注意事项
①因为new申请的数组是动态地,因此不能使用begin()和end()函数对动态数组进行操作
②不能使用for each对数组进行遍历,但是可以使用for循环操作动态数组
③hist返回的是头指针
④C++使用new和delete在堆(自由存储区)上分配和释放动态数组。记得用完释放!!!