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。