【C++】malloc/free和new/delete的区别
new = 全局operator new开内存(先) + 构造函数(后)
operator new = malloc ,若开辟空间失败,会抛异常
delete = 析构函数(先) + 全局operator delete释放内存(后)
operator delete = free
这体现了封装
operator new/delete 不是运算符重载,是调用全局函数,而函数里面包含了malloc/free
此外,operator new和operator delete能够进行专属类重载,也就是说,比如类A,我们调用new开辟A,如果A有专属类重载,那new会找到重载了的类专属的operator new,而不是全局的::operator new;
这可以用在我们不想用malloc开辟空间的时候
::表示全局域