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。