【C++】malloc/free和new/delete的区别

wuchangjian2021-11-14 13:39:35编程学习

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开辟空间的时候
::表示全局域

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。