动态数组的定义:数组变量通过指定类型、数组名和维数来定义。而动态分配数组时,只需指定类
型和数组长度,不必为数组对象命名。(摘自C++ primer 第四版)
即 int *p=new int[10]; 这样定义的数组即为动态数组
new表达式需要制定指针的类型以及在方括号中给出的数组维数,该维数可以使任意的复杂表达式
。创建数组后,new将返回指向数组第一个元素的指针。
释放:
动态数组分配的内存最后必须释放,否则,内存最终将会逐渐耗尽。如果不需要使用动态创建的数
组,程序员必须显式的将其占用的空间返还给自由存储区
如: delete []p;
注意:关键字delete和指针之间的方括号必不可少的,它告诉编译器该指针指向的是数组,而非单
个对象,理论上,如果缺少方括号对时,至少会导致运行时少释放内存空间,从而产生内存泄漏。
但是经过本人在VS2008上测试(数组的大小设置的是10W)如果少了[],不是释放一个对象,或者
说一个数组的成员,释放可能是很多个,也可能是全部(由于测试的时候少了[]会报错,所以无法
得知,只能看到有限个),所以如果想避免错误最好加上[]