C++动态内存管理
动态内存分配基础
new操作符
new返回一个指向该对象的指针,分配一块内存:
1 | int *p = new int; |
new出来的对象会默认初始化,未初始化时内置类型的值未定义,类对象用默认构造函数初始化。
直接初始化
用圆括号或者花括号:
1 | int *pi = new int(1024) |
值初始化
在类型名后面跟一对圆括号,可以避免默认初始化时内置类型的值未定义:
1 | int *pi2 = new int(); |
auto推断
用auto从初始化器推断我们想要分配的对象的类型,但括号内只能有单个初始化器。
内存耗尽处理
默认会抛出back_alloc异常,但可以使用定位new来阻止抛出异常。
评论