动态内存分配基础

new操作符

new返回一个指向该对象的指针,分配一块内存:

1
int *p = new int;

new出来的对象会默认初始化,未初始化时内置类型的值未定义,类对象用默认构造函数初始化。

直接初始化

用圆括号或者花括号:

1
int *pi = new int(1024)

值初始化

在类型名后面跟一对圆括号,可以避免默认初始化时内置类型的值未定义:

1
int *pi2 = new int();

auto推断

用auto从初始化器推断我们想要分配的对象的类型,但括号内只能有单个初始化器。

内存耗尽处理

默认会抛出back_alloc异常,但可以使用定位new来阻止抛出异常。