1. new和malloc的区别
说了很多,最本质的区别是,malloc只是new的一部分。new有三个步骤
- operator new,先创建一个新的对象,其中operator new的参数中含有malloc的成分;
- 指针强制转化,malloc返回的指针类型是void*的,转化为new出来对象的类型;
- 执行构造函数
2. delete和free的区别
delete也调用了free
- 执行析构函数,删除对象中的垃圾回收
- operator delete,也是重载过的运算符,其中也有free的成分。
3. array new要搭配array delete
classA* pobject = new classA[3];///<array new
delete[] pobject;///<array delete
delete pobject;///<如果执行这个,就会只释放pobject[0],后面的数据