1.new和malloc的区别是什么?
(1)malloc和free,称作C的库函数,new和delete,称作运算符;
(2)new不仅可以做内存开辟,还可以做内存初始化操作,malloc只能做内存开辟;
(3)new开辟内存失败,是通过抛出bad_alloc类型的异常来判断的,malloc开辟内存失败,是通过返回值和nullptr作比较。
2.new的种类
有4种。
int *p1 = new int (20);
int *p2 = new (nothrow) int;//不抛出异常
const int *p3 = new const int (40);
//定位new
int data =0;
int *p4 = new (&data) int (50);// 在堆上开辟了一块内存,内存的位置是data的地址,存放的值是50。