一、动态数组
为了支持一次性为很多元素分配内存的需求,C++语言和标准库提供了两种一次分配一个对象数组的方法。C++语言定义了另一种new表达式语法,可以分配并初始化一个对象数组。标准库中包含了一个名为allocator的类,允许我们将分配和初始化分离。使用allocator通常会提供更好的性能和更灵活的内存管理能力。
大多数应用都没有直接访问动态数组的需求。因此大多数应用应该使用标准库容器而不是动态分配的数组,使用容器更为简单、更不容易出现内存管理错误并且可能有更好的性能。
1、new和数组
为了让new分配一个对象数组,我们要在类型名之后跟一对方括号,在其中指明要分配的对象的数目,方括号中的大小必须是整型,但不必是常量。new分配要求的数量并(假定分配成功后)返回指向第一个对象的指针。也可以用一个表示数组类型的类型别名来分配一个数组。。
1 #include <iostream> 2 #include <memory> 3 #include <string> 4 5 int main() 6 { 7 8 int *p = new int[10]; // p指向分配的第一个int 9 10 typedef int arrT[10]; // arrT表示10个int的数组类型 11 int *p2 = new arrT; // 分配10个int的数组,p2指向第一个int 12 return 0; 13 }