1.普通new
形式:int* p = new int;
此时不能通过p是否为nullptr来判断内存是否开辟成功,而是需要通过bad_alloc来捕获异常。
2.(nothrow) new
形式:int *p = new (nothrow) int(20);
此时指针已经退化为C语言中通过malloc开辟内存得到的指针,是可以通过判空来验证是否成功开辟内存。
3.申请指向常量内存的指针的new
形式:const int* p = new const int(20);
4.定位new
形式:int data = 0;
int *p = new (&data) int(20);
在已知的内存上进行new。