[002]动态数组

1.动态数组的定义

int* pInt = new int[10];

 此 new 表达式分配了一个含有 10 个 int 型元素的数组,并返回指向该数组第一个元素的指针,此返回值初始化了指针 pInt;

2.动态数组的初始化

   上面的例子中,定义的数组是没有经过初始化的,其初始化的方式跟数组类似。

   ①如果是类类型,那么不用显式的对它进行初始化,程序会默认调用类的构造函数为其进行初始化。

string* pStr = new string[10];

   ②如果是默认类型,则可以通过下面的方式进行初始化。

int* pInt = new int[10]();

 ③const动态数组必须初始化。

const int* pInt = new const int[10];

3.注意事项

  a.C++ 虽然不允许定义长度为 0 的数组变量,但明确指出,调用 new 动态创建长度为 0 的数组是合法的:

char arr[0];                   // error: cannot define zero-length  
array  char *cp = new char[0]; // ok: but cp can't be dereferenced  

  b.动态数组的释放

delete [] pInt;

  注:方括号对必须添加,如果不添加,编译器是不会报错的,理论上会产生内存泄露。

原文地址:https://www.cnblogs.com/hustcser/p/3626036.html